C#访问Db更新查询不起作用

时间:2016-06-30 12:15:53

标签: c# ms-access sql-update

我正在尝试使用下面提到的代码更新访问表。但是,更新不会执行。它不会给我任何错误,但它不会更新数据库。有什么建议吗?

string Const = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\Db\\test.accdb";      

OleDbCommand Cmd;
OleDbConnection con22 = new OleDbConnection(Const );
con22.Open();

string sql = "UPDATE CostT SET tFormSent='" + Selection1.Text + "',TName='" + UserName.Text + "',FormDate='" + FormDate.Text + "',where ReqNum=" + ReqNum.Text;

cmd = new OleDbCommand(sql, con22);
cmd.ExecuteNonQuery();
con22.Close();

MessageBox.Show("Form has been Updated");

2 个答案:

答案 0 :(得分:3)

您的查询有语法错误:您的WHERE子句之前有一个不属于那里的逗号。

但更重要的是:您的代码向SQL injection开放!请不要将用户输入直接插入到查询中,而是使用参数化查询!

答案 1 :(得分:3)

尝试更改查询

string sql = "UPDATE CostT SET tFormSent = @selection1,TName = @UserName,FormDate = @FormDate where ReqNum = @ReqNum";
cmd = new OleDbCommand(sql, con22);
cmd.Parameters.Add("@selection1", Selection1.Text);
cmd.Parameters.Add("@UserName", UserName.Text);
cmd.Parameters.Add("@FromDate", FromDate.Text);
cmd.Parameters.Add("@ReqNum", ReqNum.Text);
cmd.ExecuteNonQuery();
con22.Close();