2016-11-08 18 views
0

次のSQLは、ワークベンチで期待どおりに実行されますが、C#アプリケーションから起動すると「パラメータ@searchを定義する必要があります」というエラーが生成されます。誰もこれを説明できますか?MySqlユーザー変数が無視される

set @search = 'b%'; 
select * from country where Name like @search 
+1

"どのようにC#アプリケーションから起動するのですか"?コードを表示してください。 – PaulF

答えて

2

MySQLは@variable_nameの式をユーザー定義変数として使用します。一方、C#(またはプロバイダ - どちらが本当にわからないか)では、@parameter_nameを使用してクエリのパラメータプレースホルダに注釈を付けます。

あなたは、SQLユーザー定義の変数を使用したい場合は、お使いの.Netコネクタ接続の接続文字列に次のパラメータを追加します

Allow User Variables=True 

または

AllowUserVariables=True 

を、このオプションが追加されましたconnector v5.2.2

+0

クール。これをしない理由はありますか?なぜそれはデフォルトでオフになっていますか? – bbsimonbb

+0

私はMySQLの.netコネクタの開発者ではないので、MySQLユーザー定義の変数より古い開発者が@旧式の '@ parameter_name'規則でパラメータを使用するとしか思えません。 – Shadow

関連する問題