C# OleDb sql "UPDATE, WHERE" 异常
C# OleDb sql "UPDATE, WHERE" exception
所以我有以下代码:
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 中的错误,我会很高兴。
谢谢
您绝对应该为此使用参数化查询。这才是传值的正确方式。
您的问题是您的查询缺少单引号:
"UPDATE Words "+
" SET Amount = " + times +
" WHERE Word = '" + value + "'" +
" AND Website = '" + URL + "'"
但让我再次强调,虽然这应该有效,但您应该修复代码,以便它使用参数
假设 Word 字段是一个 varchar,您忘记了变量周围必要的单引号。 " WHERE Word = '" + value + "'"
所以我有以下代码:
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 中的错误,我会很高兴。 谢谢
您绝对应该为此使用参数化查询。这才是传值的正确方式。
您的问题是您的查询缺少单引号:
"UPDATE Words "+
" SET Amount = " + times +
" WHERE Word = '" + value + "'" +
" AND Website = '" + URL + "'"
但让我再次强调,虽然这应该有效,但您应该修复代码,以便它使用参数
假设 Word 字段是一个 varchar,您忘记了变量周围必要的单引号。 " WHERE Word = '" + value + "'"