我正在编写一个连接到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;
}
答案 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();
...