MySqlCommand似乎没有传递参数
本文关键字:参数 MySqlCommand | 更新日期: 2023-09-27 18:24:58
下面的代码似乎没有将参数值插入到查询中(查询没有返回任何内容)。如果我在DB中测试该查询(当然不是?author参数),我会键入传递的值,然后返回一些行。为什么?
var conn = new MySqlConnection(connectionString);
MySqlCommand comm = new MySqlCommand("", conn);
comm.Parameters.Add(new MySqlParameter("?author", author)); //I've also tried AddWithValue method
comm.CommandText = .....;
conn.Open();
MySqlDataReader myReader = comm.ExecuteReader();
try
{
while (myReader.Read())
{
//unreachable code because nothing is returned
}
}
catch
{
myReader.Close();
conn.Close();
categoriesList.Clear();
}
finally
{
myReader.Close();
conn.Close();
}
因为您使用的是MySQLCommand
,所以不要在参数名称中添加?
:
如果你有这样的查询:
comm.CommandText = "INSERT INTO tableName(colA) VALUES (@param1)";
comm.CommandType = CommandType.Text;
那么你必须这样做:
comm.Parameters.AddWithValue("param1", "yourValue");
更新
假设您有LIKE
条件的查询:
"SELECT * FROM WHERE colA Like '%value%'"
然后试试这个:
comm.CommandText = "SELECT * FROM WHERE colA Like CONCAT('%', @param1, '%'");
comm.Parameters.AddWithValue("param1", "yourValue");
它可能和.CommandText需要在.Parameters.Add语句之前一样简单。因此:
comm.CommandText = .....;
comm.Parameters.Add(new MySqlParameter("?author", author)); //I've also tried AddWithValue method