Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我单击update按钮更新SQL C中的数据库值时,所有行都受相同值的影响_C#_Sql_Visual Studio 2010 - Fatal编程技术网

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

C# 当我单击update按钮更新SQL C中的数据库值时,所有行都受相同值的影响,c#,sql,visual-studio-2010,C#,Sql,Visual Studio 2010,下面是我的更新按钮点击事件代码 { try { con = new SqlConnection(cs.ConDB); con.Open(); string cb = "Update tblFees set Salutation= '" + cmbSalutation.Text + "' , Name= '" + tbName.Text + "',Sex = '" + cmbSex.Text + "', Date =

下面是我的更新按钮点击事件代码

    {
        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);}`
请解决我的问题,我是编程界的新手 任何帮助都将不胜感激


您应该使用where条件指定行

例如,您可以修改查询,如下所示。我假设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();
如果您想根据名称更新详细信息,则意味着:您可以提供名称 在何处条件下。但这不是一个正确的方法。因此,请使用primary keysince名称可能有重复的值


您需要将语句更改为:

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 + "'";
您需要在其中添加Name='+tbName.Text+'

现在,它将更新名称匹配的行


正如un lucky所说,你应该使用参数化查询

你应该使用where conditionGirl指定行,告诉我们你想要实现什么?你想根据名称更新表吗?你应该真正使用参数化查询,串接字符串可能会允许SQL注入攻击。更多信息,请看这个答案:不幸运的先生,请给我一些例子,我是编程的初学者…哦,上帝。。。!这为注射开辟了广阔的道路我知道她需要以自己的方式解决问题!哥们,她问的是她不想更新所有的记录。她没有说过任何不同的方法。我直截了当地回答她:多亏了联合国的幸运儿和瓦卡尔·艾哈迈德,我将尝试这个,,,,:但某些问题不应该直截了当地回答,因为它们表明解决问题的方法根本是错误的。请参见Alex Papadimoulis的幽默例子。