我的主要关键是没有得到更新

时间:2014-08-26 00:20:27

标签: c# winforms visual-studio-2010 visual-studio datagridview

当我尝试从文本框更新主键时,它没有得到更新。其余列更新正常。请帮我。

我没有收到任何错误。什么..当我尝试更新部件号时......它没有更新..简单地回到之前的值。

我的代码更新数据库的值:

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);
    }
}

提前致谢

1 个答案:

答案 0 :(得分:1)

首先,使用参数。请参阅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,并且当您尝试更改0的值时part,除非已经有一行包含新{ {1}}值(在这种情况下,您更新该行而不是在重复部分上生成错误)。

您还应考虑使用using statement作为连接和命令。