私はC#を使用してMS Accessからデータを読み取ります。しかし、このようなクエリを実行しようとしているOleDbExceptionを取得:OleDbException:条件式でのデータ型の不一致が
SELECT * FROM Flats
WHERE Flats.VersionStamp <= [theDate] AND Flats.Flat=[theFlat]
OleDbException:他の側では
Data type mismatch in criteria expression.
、次のクエリのいずれかが正常に動作します:
SELECT * FROM Flats
WHERE Flats.VersionStamp <= [theDate] AND Flats.Flat=1
SELECT * FROM Flats
WHERE Flats.VersionStamp <= #1/1/2009# AND Flats.Flat=[theFlat]
C#コード同じすべての時間をまま:
DbParameter theFlat = new OleDbParameter("theFlat", 1);
DbParameter theDate = new OleDbParameter("theDate", new DateTime(2009, 1, 1));
using (DbDataReader reader = dbHelper.ExecuteReader(sqlText, theFlat, theDate))
{ }
最後に、MS Access UIでクエリを正常に実行できます。
ここで何が間違っていますか?
は、それがに話しdbの根底に応じて、オレは名前付きパラメータを使用できますが、名前だけを使用していません:あなたはまだ順序でそれらを整列する必要があります。 –
AFAIK、OleDbは名前付きパラメータをサポートしますが、完全にはサポートしていません。パラメータに名前を付けることはできますが、コマンドオブジェクトに正しい順序で名前を追加する必要があります。 –
ありがとう、Joel&Frederik。私はExecuteReader(...)でパラメータの順序を変更し、それは動作します! – alex2k8