我的主键没有更新
本文关键字:更新 我的 | 更新日期: 2023-09-27 18:19:33
当我试图从文本框更新主键时,它没有得到更新。其余列更新良好。请帮帮我。
我没有犯任何错误。没有什么当我尝试更新零件号时。。它没有更新。。简单地返回到以前的值。
我要将值更新到数据库的代码:
private void Update_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection(@"Data Source=SREEJITHMOHA492'SQLEXPRESS;Initial Catalog=cndb;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand(@"update cncinfo set part='" + this.file_NameTextBox.Text
+ "',drawings='" + this.drawingsTextBox.Text + "',draftpath='"
+ this.gcodeTextBox.Text + "',comments='" + this.commentsTextBox.Text
+ "' where part='" + dataGridView1.Rows[0].Cells[0].Value.ToString() + "' ;", con);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void load_table()
{
SqlConnection con = new SqlConnection(@"Data Source=SREEJITHMOHA492'SQLEXPRESS;Initial Catalog=cndb;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("select part as 'Part Number',drawings as 'Drawings',draftpath as 'G-Code Path',releasepath as 'Release Path',comments as 'Comments' from cncinfo ;", con);
cmd.ExecuteNonQuery();
con.Close();
try
{
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
dbddataset = new DataTable();
sda.Fill(dbddataset);
BindingSource bSource = new BindingSource();
bSource.DataSource = dbddataset;
dataGridView1.DataSource = bSource;
sda.Update(dbddataset);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
提前感谢
首先,使用参数。参见Bobby Tables。
其次,update
语句对set
和where
子句使用相同的输入:
@"更新cncinfo set part='"+this.file_NameTextBox.Text+"',…'其中part='"+this.file.NameTextBox_Text+"';"
当您只选择已经具有新值的行时,您计划如何更改part
的值?您需要同时使用旧值和新值:
@"更新cncinfo set part='"+this.file_NameTextBox.Text+"',…'其中part='"+oldPart>+"';"
最后,ExecuteNonQuery
返回受影响的行数。如果检查该值,则当更新一行时会发现它是1
,当尝试更改part
的值时会发现是0
,除非已经有一行具有新的part
值(在这种情况下,更新该行而不是在重复零件上生成错误)。
您还应该考虑为您的连接和命令使用using
语句。