【发布时间】:2023-03-19 13:17:01
【问题描述】:
我有一个方法可以更新mysql数据库中的一条记录,当简单地使用如下字符串时查询效果很好:
string query = @"UPDATE Batches SET `State`=@State, `PostDocCount`=@PostDocCount WHERE `FilePath` LIKE '%MYDIRECTORYSTRING%'";
虽然如果我用参数化查询替换 MYDIRECTORYSTRING,例如:
string query = @"UPDATE Batches SET `State`=@State, `PostDocCount`=@PostDocCount WHERE `FilePath` LIKE '%@dirName%'";
它不再有效(记录未更新) - 我也确认了@dirName == MYDIRECTORYSTRING。所以我被引导相信这是一个语法问题? (虽然这两个查询似乎都执行得很好..)
以下是我的完整方法:
public void UpdateBatch(string postDocCount, string dirName, string state)
{
string query = @"UPDATE Batches SET `State`=@State, `PostDocCount`=@PostDocCount WHERE `FilePath` LIKE '%@dirName%'";
//Open connection
if (this.OpenConnection() == true)
{
//create mysql command
MySqlCommand cmd = new MySqlCommand();
//Assign the query using CommandText
cmd.CommandText = query;
//Assign the connection using Connection
cmd.Connection = connection;
// Parametized queries
cmd.Parameters.AddWithValue("@PostDocCount", postDocCount);
cmd.Parameters.AddWithValue("@State", state);
cmd.Parameters.AddWithValue("@dirName", dirName);
//Execute query
cmd.ExecuteNonQuery();
//close connection
this.CloseConnection();
}
}
【问题讨论】: