查询expression式中的语法错误(缺less运算符)“”

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

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

这会产生这个错误:

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

插入数据到我的excel文件时,我没有任何问题,但是当它删除它说这个错误。 还在练习互动,请和我一起裸照

试着用这个即删除* ,用DELETE语句不需要:

 string sql = "DELETE FROM [" + tablename + "$] where _date = '" + full_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(); }