2013-02-28 63 views
2

我的SQL查询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语句包含保留字或拼写错误或缺失的参数名称,或标点符号不正确。

请人帮助我

回答

2

vchr_Date as Date部分,

Date上的Transact-SQL一个reserved keyword

保留关键字是所使用的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); 
2

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

vchr_Date as [Date] 

或更改Date一些其他的别名。

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

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

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

vchr_No as voucher No 

应表示为

vchr_No as [voucher No] 

,或者您会不会有有效的SQL。

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