当我单击更新按钮更新SQL C#中的数据库值时所有行都受到相同的值的影响

时间:2015-10-13 06:58:01

标签: c# sql visual-studio-2010

This is my screen shot

Bellow是我的代码更新按钮单击事件!

    {
        try
    {

        con = new SqlConnection(cs.ConDB);
        con.Open();
        string cb = "Update tblFees set Salutation= '" + cmbSalutation.Text + "' , Name= '" + tbName.Text + "',Sex = '" + cmbSex.Text + "', Date ='" + Date.Text + "',Fees_Amount='" + cmbFeesAmount.Text + "',Fees_Status='" + radioButton1.Checked + "'";
        cmd = new SqlCommand(cb);
        cmd.Connection = con;
        cmd.ExecuteReader();
        con.Close();
        MessageBox.Show("Successfully updated", "Record", MessageBoxButtons.OK, MessageBoxIcon.Information);

        btnUpdate.Enabled = false;
        btnSave.Enabled = true;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    try
    {
        con = new SqlConnection(cs.ConDB);
        con.Open();
        cmd = new SqlCommand("SELECT * From tblFees", con);
        SqlDataAdapter myDA = new SqlDataAdapter(cmd);
        DataSet myDataSet = new DataSet();
        myDA.Fill(myDataSet, "tblFees");
        dataGridView1.DataSource = myDataSet.Tables["tblFees"].DefaultView;
        con.Close();


    }catch (Exception ex)
        {
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,                          MessageBoxIcon.Error);}`

请解决我的问题我是编程世界的新手 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

  

您应该使用where condition

指定行

例如,您可以修改您的查询,如下所示。我假设cboUser是一个组合框,您可以选择特定用户,以便仅为该选定用户更新数据。

SqlConnection con = new SqlConnection();
con.Open();
string cb = "Update [tblFees] set Salutation=@Salutation, Name=@Name,Sex =@Sex where tblFeesPK=@pk'";
SqlCommand cmd = new SqlCommand(cb, con);
cmd.Parameters.AddWithValue("@Salutation", cmbSalutation.Text);
cmd.Parameters.AddWithValue("@Name", tbName.Text);
cmd.Parameters.AddWithValue("@Sex", cmbSex.Text);
cmd.Parameters.AddWithValue("@pk", cboUser.SelectedValue);
cmd.ExecuteNonQuery();
  

如果您想根据名称更新详细信息:您可以提供姓名   在哪里条件。但这不是一个正确的方法。所以使用初级   key(因为名称可能有重复的值)

答案 1 :(得分:-2)

您需要将声明更改为:

string cb = "Update tblFees set Salutation= '" + cmbSalutation.Text + "' , Name= '" + tbName.Text + "',Sex = '" + cmbSex.Text + "', Date ='" + Date.Text + "',Fees_Amount='" + cmbFeesAmount.Text + "',Fees_Status='" + radioButton1.Checked + "' where Name= '" + tbName.Text + "'";

您需要添加where Name= '" + tbName.Text + "';

现在它将更新Name匹配的行

同样不幸的是,你应该使用参数化查询