2013-02-19 69 views
0

我正在寫一個連接到Oracle MySQL的函數來檢查特定的行,但它似乎不工作!有人告訴我如何檢查數據庫中是否存在一行檢查MySQL數據庫中是否存在一行?

private bool groupAlreadyHasAdmin(string grp) { 
try 
     { 
      myConn.Open(); 
      strCmd = "SELECT * FROM users WHERE [email protected] 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; 
} 
+2

'myCmd.Parameters.AddWithValue( 「組名」,GRP);'應該是'myCmd.Parameters.AddWithValue( 「@組名」,GRP);'就在我頭頂。另外,你是否收到任何類型的錯誤? – MyCodeSucks 2013-02-19 21:30:09

+0

幾乎發生了讀'Oracle MySQL'的心臟病發作,仍然不習慣! – Sebas 2013-02-19 21:31:12

+0

你確定嗎?我正在使用Oracle Mysql,因爲有一段時間我以這種方式工作,即使在我不添加@ – 2013-02-19 21:31:20

回答

0

一種可能性是正確的英文拼寫是「特權」。也許這查詢將工作:

strCmd = "SELECT * FROM users WHERE [email protected] AND privilege=2 LIMIT 1"; 

而且,你可以做SELECT 1而不是SELECT * - 沒有理由帶回你不打算使用的數據。

0

試試看:先獲取行數。

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

我終於發現使用這些代碼行的解決方法,這樣的:

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

上述答案使用的ExecuteReader,和的ExecuteNonQuery。您可能更喜歡使用簡單的Exists查詢,然後執行ExecuteScalar,以使事情變得簡單。你可以在你的情況下使用以下命令:

using (MySqlCommand cmd = new MySqlCommand()){ 
    cmd.Connection = con; 
    cmd.CommandText = @"SELECT EXISTS(SELECT 1 FROM users WHERE [email protected] 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.. 
} 
+0

我想你甚至可以刪除選擇從前面存在,它仍然會工作.. – Chris 2013-09-10 21:59:58

相關問題