我的主键没有更新

本文关键字:更新 我的 | 更新日期: 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语句对setwhere子句使用相同的输入:

@"更新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语句。

相关文章: