1

因此,我尝试使用以下语法为每个结果生成一个行号,其中:

  • @row在查询运行时创建,并且
  • @search是我自己添加的参数:
var cmd = new MySqlCommand();
cmd.CommandText = @"SET @row = 0;
                    SELECT
                        (@row:= @row + 1) AS row,
                            *
                    FROM
                        clients
                    WHERE
                        name CONCAT('%', @search, '%')";

cmd.Parameters.AddWithValue("@search", "whatever");

try
{
    cmd.Connection.Open();
    using (var reader = cmd.ExecuteReader())
    {
        // blah blah
    }
}
catch (Exception ex)
{
    cmd.Connection.Close();

}  

如果我直接在数据库中运行 MySQL,则此查询工作正常,但我从 c# 收到错误:

Parameter @row must be defined

..如果我使用一个MySqlCommand对象。

有没有办法解决这个问题?

谢谢

4

0 回答 0