繁体   English   中英

查询表达式“”中的语法错误(缺少运算符)

[英]Syntax error (missing operator) in query expression “”

我在删除(DELETE)行时遇到问题。 每次我在string sql添加列名时,它都会显示错误“查询表达式中的语法错误(缺少运算符)”。 这是我的代码:

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'"

它将产生此错误:

查询表达式“ _date = '03 09 2015'”中的语法错误(缺少运算符)

我在excel文件中插入数据时没有任何问题,但是在删除时会显示此错误。

尝试使用此方法,即删除* ,它对于DELETE语句不是必需的:

string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";

另外,您在full_date中获得的值似乎没有采用正确的格式。 请使用表中的格式检查在full_date中获得的值。

附带说明:

您的代码易于进行SQL注入。 您需要使用准备好的语句来避免这种情况。

您的查询中有语法错误,请从查询中删除* ,因此您的查询可能如下所示:您可以在此处检查语法

 string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_date + "'";

而且您正在使用的查询将为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();

 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM