2

我的 SQL 查询是

cmd = new OleDbCommand("select vchr_No as voucher No, vchr_Date as Date, 
                        vchr_Acnthd as Debit, vchr_Prtynm as Paid to 
                        from cshvchrs  
                        where vchr_No like '%" + vchno + "%' ", con);

当我尝试检索数据时出现异常:

SELECT 语句包含拼写错误或丢失的保留字或参数名称,或者标点符号不正确。

请任何人帮助我

4

4 回答 4

5

您的 SQL 无效 - 包含空格的别名需要转义,作为关键字的别名也是如此。

cmd = new OleDbCommand("select vchr_No as [voucher No] ,vchr_Date as [Date] ,vchr_Acnthd as Debit ,vchr_Prtynm as Paid to from cshvchrs  where vchr_No like '%" + vchno + "%' ", con);
于 2013-02-28T17:12:16.983 回答
2

您正在使用Date别名 ( vchr_Date as Date)。Date是保留关键字,请尝试:

vchr_Date as [Date]

或更改Date为其他别名。

您还需要使用[]带空格的别名。

于 2013-02-28T17:11:18.230 回答
2

一方面vchr_Date as Date

Datereserved keyword关于 Transact-SQL 的。

保留关键字是 SQL Server 用来解析和理解 Transact-SQL 语句和批处理的 Transact-SQL 语言语法的一部分。

您可以将它与方括号一起使用,[]例如;

vchr_Date as [Date]

将您的完整查询用作;

cmd = new OleDbCommand("select vchr_No as [voucher No] ,vchr_Date as [Date] ,vchr_Acnthd as Debit ,vchr_Prtynm as Paid to from cshvchrs  where vchr_No like '%" + vchno + "%' ", con);
于 2013-02-28T17:12:15.177 回答
1

您错误地指定了列名。例如,片段:

vchr_No as voucher No

应表示为

vchr_No as [voucher No]

否则您将没有有效的 SQL。

通常,您需要将 [ 和 ] 放在包含空格、标点、关键字或 SQL 列标识符中不允许的任何其他字符的列名周围。

于 2013-02-28T17:13:27.827 回答