查询表达式“”中的语法错误(缺少运算符)
Syntax error (missing operator) in query expression ""
我在删除(DELETE)行时遇到问题。每次我在 string sql
中添加列名时,它都会显示错误 "Syntax error (missing operator) in query expression "。这是我的代码:
OleDbConnection myCon = new OleDbConnection("provider = Microsoft.Jet.OLEDB.4.0;DataSource = '" + fileLocation + "'; Extended Properties=Excel 8.0;");
OleDbCommand myCmd = new OleDbCommand();
myCmd.Connection = myCon;
string sql = "DELETE * FROM [" + tablename + "$] where _date = '" + full_date + "'";
myCmd.CommandText = sql;
myCon.Open();
myCmd.ExecuteNonQuery();
myCon.Close();
例如我的 string sql
值为
"DELETE * FROM [Sheet1$] where _date = '03 09 2015'"
它会产生这个错误:
Syntax Error (missing operator) in query expression "_date = '03 09
2015'"
我在 excel 文件中插入数据时没有问题,但在删除时却出现此错误。
您的查询有语法错误,请从您的查询中删除 *
,因此您的查询可能如下所示:您可以检查语法 here:
string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";
并且您正在使用的查询将为 sql injection 开辟一条广阔的道路,因此更好的方法是使用参数化查询。
尝试使用它,即删除 *
,DELETE
语句不需要它:
string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";
此外,您在 full_date
中获得的值似乎格式不正确。请检查您在 full_date
中获得的值与您在 table.
中的格式
旁注:
您的代码容易 SQL 注入。您需要使用准备好的语句来避免这种情况。
你应该试试
string strQuery= "DELETE FROM @TableName where _date = '@date'";
usin (SqlCommand cmd = new SqlCommand(strQuery)){
cmd.Parameters.AddWithValue("@TableName", tablename+"$" );
cmd.Parameters.AddWithValue("@date", full_date );
myCon.Open();
cmd.ExecuteNonQuery();
}
我在删除(DELETE)行时遇到问题。每次我在 string sql
中添加列名时,它都会显示错误 "Syntax error (missing operator) in query expression "。这是我的代码:
OleDbConnection myCon = new OleDbConnection("provider = Microsoft.Jet.OLEDB.4.0;DataSource = '" + fileLocation + "'; Extended Properties=Excel 8.0;");
OleDbCommand myCmd = new OleDbCommand();
myCmd.Connection = myCon;
string sql = "DELETE * FROM [" + tablename + "$] where _date = '" + full_date + "'";
myCmd.CommandText = sql;
myCon.Open();
myCmd.ExecuteNonQuery();
myCon.Close();
例如我的 string sql
值为
"DELETE * FROM [Sheet1$] where _date = '03 09 2015'"
它会产生这个错误:
Syntax Error (missing operator) in query expression "_date = '03 09 2015'"
我在 excel 文件中插入数据时没有问题,但在删除时却出现此错误。
您的查询有语法错误,请从您的查询中删除 *
,因此您的查询可能如下所示:您可以检查语法 here:
string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";
并且您正在使用的查询将为 sql injection 开辟一条广阔的道路,因此更好的方法是使用参数化查询。
尝试使用它,即删除 *
,DELETE
语句不需要它:
string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";
此外,您在 full_date
中获得的值似乎格式不正确。请检查您在 full_date
中获得的值与您在 table.
旁注:
您的代码容易 SQL 注入。您需要使用准备好的语句来避免这种情况。
你应该试试
string strQuery= "DELETE FROM @TableName where _date = '@date'";
usin (SqlCommand cmd = new SqlCommand(strQuery)){
cmd.Parameters.AddWithValue("@TableName", tablename+"$" );
cmd.Parameters.AddWithValue("@date", full_date );
myCon.Open();
cmd.ExecuteNonQuery();
}