所以我有以下代码:
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中找到错误,我会很高兴。 感谢。
答案 0 :(得分:1)
你绝对应该为此使用参数化查询。这是传递值的正确方法。
您的问题是您的查询缺少单引号:
"UPDATE Words "+
" SET Amount = " + times +
" WHERE Word = '" + value + "'" +
" AND Website = '" + URL + "'"
但是让我再次强调,尽管这应该有效,但你应该修改代码,以便它使用参数
答案 1 :(得分:0)
假设Word字段是varchar,您忘记了变量周围必要的单引号。 "在哪里Word ='" +值+"'"