我的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语句包含拼写错误或缺失的保留字或参数名称,或标点符号不正确。
请有人帮助我
答案 0 :(得分: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);
答案 1 :(得分:2)
您使用Date
作为别名(vchr_Date as Date
)。 Date
是保留关键字,请尝试:
vchr_Date as [Date]
或将Date
更改为其他别名。
您还需要在空格的别名周围使用[]
。
答案 2 :(得分:2)
在vchr_Date as Date
部分,
Date
是Transact-SQL上的reserved keyword
。
保留关键字是Transact-SQL语言语法的一部分 SQL Server用于解析和理解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);
答案 3 :(得分:1)
您错误地指定了列名称。例如,片段:
vchr_No as voucher No
应表示为
vchr_No as [voucher No]
或者你没有有效的SQL。
通常,您需要在[和]列周围放置包含空格,标点符号,关键字或SQL列标识符中不允许的任何其他字符的列名。