2011-02-08 8 views
1

MySQLサーバとやり取りするC#プログラムのDB検索を行うには、文字列クエリを使用する必要があります。私はとすぐに私のプログラムでクエリを実行するとC#プログラムで'like'と混乱したMySQLクエリの問題

string q = "SELECT * 
       FROM TABLE 
      WHERE name is like %?nameVar%"; 

を次のクエリを持っている私の他の変数(nameVar)の1

「のような」私は何を見つけたいと思うことはある名前です。 のような構文が間違っていると私に知らせる構文エラーが出ます。 "%"記号を取り除くとすぐにうまく動作します。

私は混乱していますが、クエリ文字列を作成するときに%記号を削除することは必須ですか?クエリを引用する必要が

+0

にクエリを変更します。 –

+0

上記はパラメータ化されたクエリですか、そうではありませんか? –

答えて

1

あなたのパラメータは、引用符を含め、?nameVar一部を置き換えています。 paramが "TEST"の場合、クエリは次のように表示されます

string q = "SELECT * 
       FROM TABLE 
      WHERE name is like %'TEST'%"; 

ご覧のとおり、%記号は適切ではありません。どちらかnamevarにC#のプログラムからそれらを含めるか、私はSQLインジェクション攻撃を防ぐために、パラメータ化クエリを使用するrecommmendう

string q = "SELECT * 
       FROM TABLE 
      WHERE name is like '%' + ?nameVar + '%'"; 
+0

これは動作するはずです! –

0

:SQLで

string q = "SELECT * from table where name is like '%?nameVar%'"; 
0

文字列は単一引用符で囲む必要があります。LIKEを使用した場合

string q = "SELECT * 
       FROM TABLE 
      WHERE name LIKE '%?nameVar%' "; 

はまた、何ISオペレータはありません。

+0

うん、私はそのままにしていると思う。それは間違いであった –

0

あなたは 'is'を除外しなければならないと思います。

MySQL Pattern Matching

+0

ええ、私は外にそれを残す! –

0

私は正しい構文があると思う:

SELECT * FROM table WHERE fields LIKE '%phrase%' 
+0

これはパラメータ化されたクエリなので使用する必要がありますか?同様に –

+0

Hmmm、 "SELECT * FROM WHERE LIKE?"、パラメータは "%"&var& "%"になるはずです –