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)
我相信你的命令文本就是问题所在;
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)
这就是我倾向于格式化我的代码的方式,所以按照你的意愿去做吧。希望能帮助到你。