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 keywordTransact-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 に答える