我在理解数据库和 SQL 的工作原理时遇到了一些困难。我正在尝试更新数据库中的特定行。我可以删除一行,但是当我使用 InsertAt 函数时,它总是附加到我的数据库的末尾。此外,它还分配了一个新的标识符键。
我只想编辑已经存在的内容。不需要新 key ,我希望编辑后的行保留在原处。
我试图剥离代码以显示问题。
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];
然后修改行数据,然后更新da
。
这将更新数据库中的现有行。
关于c# - 向数据库中插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773201/