在c#中使用mysql时计算受影响的行数

Nat*_*han 3 c# mysql

我在C#中有一个连接到MySQL数据库的WinForms项目.我正在尝试计算结果中的行数,我无法使用,RecordsAffected因为此属性在读取完成后只有正确的值,并且您可以从下面的代码中看到我之前需要它.有什么想法如何做到这一点?

string sql = "SELECT * FROM Tigers WHERE Link='" + link + "'";

MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    if (rdr.RecordsAffected == 0)
    {
        //can't find in db               
    }
    else
    {
        //found at least 1 result
    }
Run Code Online (Sandbox Code Playgroud)

Nas*_*ine 7

你可以HasRows改用:

string sql = "SELECT * FROM Tigers WHERE Link='" + link + "'";

MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();

if(rdr.HasRows){
    while (rdr.Read())
    {
            //do stuff here
    }
} else {
    //nothing found
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果您不需要读取从数据库中检索的数据,只需要您可以使用的计数:

cmd.CommandText = "SELECT COUNT(*) FROM Tigers WHERE Link='" + link + "'";
Int32 count = (Int32) cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答,我最后使用了hasrow,它的工作非常出色.再次感谢! (2认同)