我在理解数据库和SQL的工作方式时遇到了一些困难。我正在尝试更新数据库中的特定行。我可以删除一行,但是当我使用InsertAt函数时,它总是被附加到数据库的末尾。另外,它还分配了一个新的标识符密钥。
我只想编辑其中已经存在的内容。不需要新密钥,我希望编辑后的行保持原样。
我试图精简代码以显示问题。
public partial class MainWindow : Window { System.Data.SqlClient.SqlConnection con; System.Data.SqlClient.SqlDataAdapter da; DataSet sessions; public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { con = new System.Data.SqlClient.SqlConnection(); sessions = new DataSet(); con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\md\\PokerDataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; con.Open(); string sql = "SELECT * From Sessions"; da = new System.Data.SqlClient.SqlDataAdapter(sql, con); da.Fill(sessions, "Sessions"); con.Close(); System.Data.SqlClient.SqlCommandBuilder cb; cb = new System.Data.SqlClient.SqlCommandBuilder(da); DataTable dt = sessions.Tables["Sessions"]; DataRow table = sessions.Tables["Sessions"].NewRow(); table[0] = "Some Data"; table[1] = "Some Data"; table[2] = "Some Data"; table[3] = 2; table[4] = 3; sessions.Tables["Sessions"].Rows[2].Delete(); sessions.Tables["Sessions"].Rows.InsertAt(table, 2); da.Update(sessions, "Sessions"); } }
有人可以帮我弄清楚我做错了什么吗?
错误
您正在使用创建新行
DataRow table = sessions.Tables["Sessions"].NewRow();
这会将新行添加到您的数据库,而不会更新行。
解决方案
要更新一行,您需要选择该特定行,例如:
DataRow table = sessions.Tables["Sessions"].Rows[0];
then modify the row data and then update da. This will the update existing row in your database.
da