2013-02-28 34 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列標識符中不允許的任何其他字符的列名稱周圍。