检查MySQL数据库中是否已存在行?

时间:2013-02-19 21:28:56

标签: c# mysql .net

我正在编写一个连接到Oracle MySQL以检查特定行的函数,但它似乎不起作用!有人可以告诉我如何检查DB中是否已存在行

 private bool groupAlreadyHasAdmin(string grp) {
 try
        {
            myConn.Open();
            strCmd = "SELECT * FROM users WHERE usergroup=@groupname AND privelege=2 LIMIT 1";
            MySqlCommand myCmd = new MySqlCommand(strCmd, myConn);
            myCmd.Parameters.AddWithValue("groupname", grp);
            if (myCmd.ExecuteNonQuery() > 0)
            {                    
                return true;
            }
            else 
            {                    
                return false;
            } 
        }
        catch (Exception E) { MessageBox.Show(E.Message); }
        return false;
}

4 个答案:

答案 0 :(得分:2)

上面的答案是使用ExecuteReader和ExecuteNonQuery。您可能更喜欢使用简单的Exists查询,然后执行ExecuteScalar,以简化操作。您可以在案例中使用以下命令:

using (MySqlCommand cmd = new MySqlCommand()){
    cmd.Connection = con;
    cmd.CommandText = @"SELECT EXISTS(SELECT 1 FROM users WHERE usergroup=@groupname AND privelege=2 LIMIT 1)";
    cmd.Parameters.AddWithValue("groupName", groupName);
    var result = cmd.ExecuteScalar();
    //result will be 1 if it exists, and 0 if it does not..
}

答案 1 :(得分:0)

一种可能性是正确的英语拼写是“特权”。也许这个查询可行:

strCmd = "SELECT * FROM users WHERE usergroup=@groupname AND privilege=2 LIMIT 1";

另外,您可以SELECT 1代替SELECT * - 没有理由带回您不会使用的数据。

答案 2 :(得分:0)

试一试:首先获取行数。

...
return myCommand.ExecuteNonQuery() > 0;

答案 3 :(得分:0)

我终于使用以下代码行找到了解决方法:

...
return myCmd.ExecuteReader().Read();
...