在c#中使用oledb更新数据

Ami*_*mir 1 c# oledb ms-access

我使用 c# 和数据库使用 access accdb 创建了一个项目,并将它们连接起来。我制作了 2 个按钮,第一个用于添加新客户,效果完美,第二个用于更新客户的数据(名字和姓氏),由于某种原因,更新按钮不起作用,当我运行该项目,但单击后没有任何反应......

private void button2_Click(object sender, EventArgs e)
{
    connect.Open();
    string cid = textBox1.Text;
    string cfname = textBox2.Text;
    string clname = textBox3.Text;
    OleDbCommand command = new OleDbCommand();
    command.Connection = connect;
    command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;
    if (connect.State == ConnectionState.Open)
    {
        try
        {
            command.ExecuteNonQuery();
            MessageBox.Show("DATA UPDATED");
            connect.Close();
        }
        catch (Exception expe)
        {
            MessageBox.Show(expe.Source);
            connect.Close();
        }
    }
    else
    {
        MessageBox.Show("ERROR");
    }
}
Run Code Online (Sandbox Code Playgroud)

hor*_*HAY 5

我相信你的命令文本就是问题所在;

command.CommandText = "UPDATE Tcostumers SET cfname= " + cfname + "clname= " + clname + " WHERE cid = " + cid;
Run Code Online (Sandbox Code Playgroud)

您需要在集合语句之间使用逗号,并且正如吉诺指出的语音标记一样。

编辑:

这比你对变量使用参数要好,你当前的方法对 SQL 注入开放,例如。

    private void button2_Click(object sender, EventArgs e)
    {
        OleDbCommand command = new OleDbCommand(@"UPDATE Tcostumers
                                                    SET cfname = @CFName,
                                                        clname = @CLName
                                                    WHERE cid = @CID", connect);

        command.Parameters.AddWithValue("@CFName", textBox2.Text);
        command.Parameters.AddWithValue("@CLName", textBox3.Text);
        command.Parameters.AddWithValue("@CID", textBox1.Text);

        try
        {
            connect.Open();
        }
        catch (Exception expe)
        {
            MessageBox.Show(expe.Source);
        }
        try
        {
            command.ExecuteNonQuery();

            MessageBox.Show("DATA UPDATED");
        }
        catch (Exception expe)
        {
            MessageBox.Show(expe.Source);
        }
        finally
        {
            connect.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我倾向于格式化我的代码的方式,所以按照你的意愿去做吧。希望能帮助到你。