C#OleDb sql" UPDATE,WHERE"例外

时间:2015-10-11 19:48:35

标签: c# sql oledb

所以我有以下代码:

public static void WriteToDatabase(string sql,string value,int Amount, string URL)
    {
int times = int.Parse(((dr)[dt.Columns[1]]).ToString()) + Amount;
                    sql = "UPDATE Words "+
                          " SET Amount = " + times + 
                          " WHERE Word = " + value + 
                          " AND Website = " + URL + ";";
myAdp = new OleDbDataAdapter();
myAdp.InsertCommand = new OleDbCommand(sql, myConn);
                    myAdp.InsertCommand.ExecuteNonQuery();
}

应该更新预先制作的Microsoft Access 2007文件中的值, 每当我运行代码时,他们就会发生OleDb异常:

未处理的类型' System.Data.OleDb.OleDbException'发生在System.Data.dll中, 查询表达式中的语法错误缺少运算符:' Word = meta AND Website = http://www.twitch.tv/directory'。" "

所以我在网上搜索了可能发生的常见错误,我找不到任何错误, 如果有人能在sql中找到错误,我会很高兴。 感谢。

2 个答案:

答案 0 :(得分:1)

你绝对应该为此使用参数化查询。这是传递值的正确方法。

您的问题是您的查询缺少单引号:

"UPDATE Words "+
                      " SET Amount = " + times + 
                      " WHERE Word = '" + value + "'" +
                      " AND Website = '" + URL + "'"

但是让我再次强调,尽管这应该有效,但你应该修改代码,以便它使用参数

答案 1 :(得分:0)

假设Word字段是varchar,您忘记了变量周围必要的单引号。 "在哪里Word ='" +值+"'"