当我尝试从文本框更新主键时,它没有得到更新。其余列更新正常。请帮我。
我没有收到任何错误。什么..当我尝试更新部件号时......它没有更新..简单地回到之前的值。
我的代码更新数据库的值:
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);
}
}
提前致谢
答案 0 :(得分:1)
首先,使用参数。请参阅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
,并且当您尝试更改0
的值时part
,除非已经有一行包含新{ {1}}值(在这种情况下,您更新该行而不是在重复部分上生成错误)。
您还应考虑使用using
statement作为连接和命令。