在Pomelo MySQL C#Connector中使用预准备语句时,添加参数的语法如下:
String sqlCommand = "select * from db where username=@param1"
MySqlCommand command = connection.CreateCommand();
command.Parameters.AddWithValue("@param1", "Ben");
我遇到的问题是因为在MySQL中使用用户定义变量的语法是:
String sqlCommand = "SET @userVar1 := 18; select * from db where username=@param1 AND age > @userVar1"
请注意,这里使用用户变量只是为了演示语法。我使用它的真实示例需要使用预准备语句和用户变量。但是,由于这种语法冲突,我得到了:
命令执行期间遇到致命错误。 ---> Pomelo.Data.MySql.MySqlException:必须定义参数'@ userVar1'
有没有人遇到过类似的问题?
答案 0 :(得分:2)
对于在查询字符串中使用用户定义变量的enable SET
,您需要在web.config或Allow User Variables=True
定义中的连接字符串中声明MySqlConnection
:
<强>的Web.config 强>
<connectionStrings>
<add name="DefaultConnection" connectionString="server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
Allow User Variables=True" />
</connectionStrings>
手动定义
string connectionString = @"server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
Allow User Variables=True";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
string sqlCommand = "SET @userVar1 := 18; select * from db where username=@param1 AND age > @userVar1"
connection.Open();
using (MySqlCommand command = new MySqlCommand(sqlCommand, connection))
{
// add required parameters here
// and call ExecuteReader() afterwards
}
}
从this explanation中提供的.NET Connector 5.2.2版开始提供的用户定义变量设置。
相关问题:
How can I use a MySql User Defined Variable in a .NET MySqlCommand?