2011-12-24 13 views
0

私はこれを解決することはできません。Sqlコンパクトエディション - 単純なselectステートメントが機能しません。

私は、SQL CEで、このコード行を実行しようとしている:

SqlCeCommand comSelect = new SqlCeCommand("SELECT * FROM Items WHERE barcode = '@barcode'", conn); 
comSelect.Parameters.Add(new SqlCeParameter("barcode", System.Data.SqlDbType.NVarChar, 100)).Value = barC; 

いくつかの奇妙な理由で - empty-すなわちない結果が見つかったとして、それはいつも戻ってきます。クエリ文字列にパラメータ値を置くと、次のようになります。

SELECT * FROM Items WHERE barcode = '123ABC' 

これは完全に機能します。列がNVarCharであることを追加します。

これはなぜ機能していないのでしょうか?これを使用して

+0

あなたは、単一引用符( ' '@のbarcode'')にあなたのパラメータを置く場合、それが本当に**文字列リテラル**だ - もうないパラメータ。だから、あなたのSELECTは、 'barcode'カラムに' @ barcode'という値が入っている項目を探しています。これは明らかにあなたが望むものではありません。 –

答えて

2

試してみてください。代わりにあなたが持っているものの

"SELECT * FROM Items WHERE barcode = @barcode" 

@barcodeに引用符がないことに注意してください。

+0

ありがとうございました!私は、あなたがNVarChar型としてパラメータを宣言するときに、それ自体が引用符を入れているので、ステートメントは次のようになります: "SELECT ... WHERE barcode = '' 123ABC '' –

6

試してみてください。

new SqlCeCommand("SELECT * FROM Items WHERE barcode = @barcode", conn); 
comSelect.Parameters.Add(new SqlCeParameter("@barcode", System.Data.SqlDbType.NVarChar, 100)).Value = barC; 
+0

これは役に立ちませんでした: ( –

+0

申し訳ありませんが、私は引用符の欠如を逃しました。あなたの答えは良いです –

関連する問題