查询表达式中的语法错误(缺少运算符),Oledb UPDATE 语句

Posted

技术标签:

【中文标题】查询表达式中的语法错误(缺少运算符),Oledb UPDATE 语句【英文标题】:Syntax error (missing operator) in query expression, Oledb UPDATE Statement 【发布时间】:2014-05-25 12:14:17 【问题描述】:

我是 C# 的初学者,我已经尝试浏览很多帖子来尝试解决我的问题,但我没有任何运气,所以我想我不妨创建一个帖子来寻求你的帮助。基本上,我正在尝试使用一些额外的信息更新一个 excel 文件,但问题是每次我运行源代码时都会收到此错误:

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:查询表达式“无线立体声耳机 (TAK)(损坏)”中的语法错误(缺少运算符)。

我尝试了很多方法来修复它,包括使用 INSERT 语句而不是 UPDATE 语句,但似乎没有任何效果。

再次感谢您的帮助 =)。

int m_intRecipientESMID = Convert.ToInt32(m_recipientESMID);

//Converting Row integer to string
string m_excelRowCoordinateLoanItemTrackerStr = m_excelRowCoordinateLoanItemTracker.ToString();

//Creating a connection directory to access the Excel "LoanItemTracker" file
string m_pathSourceExcelLoanItemTrackerNOHDR = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBoxExcelLoanItemTrackerLocation.Text + @";Extended Properties=""Excel 8.0; HDR=NO;ImportMixedTypes=Text;TypeGuessRows=0""";
OleDbConnection m_pathConnectionExcelLoanItemTrackerNOHDR = new OleDbConnection(m_pathSourceExcelLoanItemTrackerNOHDR);

m_pathConnectionExcelLoanItemTrackerNOHDR.Open();   //Open Excel File LoanItemTracker.xlsx to conduct Write/Update process

string m_scannedItemName2 = "Wireless Stereo Headphone (TAK)      (damaged)";

// write the loaned item name into the Excel Spread sheet "LoanItemTracker.xls"
string m_excelRowColumnLoanItemNameCoord = String.Concat(m_excelColumnCoordinateLoanItemNameLoanItemTracker, m_excelRowCoordinateLoanItemTrackerStr);
string m_LoanItemNameWriteCommand = String.Format("UPDATE [Sheet1$0:0] SET F1=1", m_excelRowColumnLoanItemNameCoord, m_scannedItemName2);
OleDbCommand m_LoanItemTrackerCommandWrite = new OleDbCommand(m_LoanItemNameWriteCommand, m_pathConnectionExcelLoanItemTrackerNOHDR);

m_LoanItemTrackerCommandWrite.ExecuteNonQuery();

m_pathConnectionExcelLoanItemTrackerNOHDR.Close();

【问题讨论】:

【参考方案1】:

你必须在文本周围加上引号:

String.Format("UPDATE [Sheet1$0:0] SET F1='1'", m_excelRowColumnLoanItemNameCoord, m_scannedItemName2);

我把它们放在1 之前和之后。此外,最好使用参数化查询。你也不需要引号。

【讨论】:

【参考方案2】:

检查一下:UPDATE [Sheet1$0:0] SET F1='1' 也许你忘记了引号。

【讨论】:

以上是关于查询表达式中的语法错误(缺少运算符),Oledb UPDATE 语句的主要内容,如果未能解决你的问题,请参考以下文章

oledb 异常未处理

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

访问表单 - 查询表达式中的语法错误(缺少运算符)

在 MS Access 中的查询表达式中出现语法错误(缺少运算符)

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

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