2017-04-06 72 views
-3

請幫助我,當我更新e時出錯!更新過程中未處理MySqlException

bdDataSet = new DataSet(); 
//Define string de conexão 
bdConn = new MySqlConnection("Server=xxxxxxxxx;Database=xxxxxxx;Uid=xxxxxxx;Pwd=xxxxxxxx"); 
var command = bdConn.CreateCommand(); 
//Abre conecção 
try 
{ 
    bdConn.Open(); 
} 
catch 
{ 
    MessageBox.Show("Impossível estabelecer conexão"); 
} 
//Verifica se a conexão está aberta 
if (bdConn.State == ConnectionState.Open) 
{ 
    //ENCONTRA USUARIO 
    command.CommandText = "SELECT * FROM users WHERE [email protected] and [email protected]"; 
    command.Parameters.Add("@email", MySqlDbType.VarChar).Value = textBoxUser.Text; 
    command.Parameters.Add("@senha", MySqlDbType.VarChar).Value = textBoxPass.Text; 
    MySqlDataReader reader = command.ExecuteReader(); 
    if (reader.Read()) 
    { 
     string email = reader.GetString("email"); 
     if (Convert.IsDBNull(reader["hd_id"])) 
     { 
      //ADD HD ID NO D 


      MySqlCommand sql2 = new MySqlCommand("UPDATE users SET [email protected] WHERE [email protected]", bdConn); 
      sql2.Parameters.Add("@hdid", MySqlDbType.VarChar).Value = HardDrive.GetHDDSerialNo(); 
      sql2.Parameters.Add("@email", MySqlDbType.VarChar).Value = email; 
      sql2.ExecuteReader(); 
     } 
     if (reader.GetString("hd_id") != null) 
     { 
      MessageBox.Show("Tem HD"); 
     } 
    } 
    else 
    { 
     MessageBox.Show("Usuários e/ou Senha Invalido"); 
    } 

    bdConn.Close(); 
} 

讓我有錯誤在這行

sql2.ExecuteReader(); 

請helpe做解決這個問題!對不起,我的英語來自巴西。我已經盡了一切努力來做這個查詢,但我根本不能希望你們中的任何人都能幫助我!

+0

任何時候你「出現錯誤」,你必須告訴我們是什麼錯誤。 –

+0

什麼是錯誤? –

回答

1

在這裏您的第二個查詢的情況下,您需要使用sql2.ExecuteNonQuery();而不是sql2.ExecuteReader();

ExecuteNonQuery()執行編錄操作(例如, 查詢數據庫的結構或創建數據庫對象, 表),或通過執行UPDATE改變在數據庫中的數據,而無需使用 數據集,INSERT或DELETE語句。該方法將返回受影響的行數。

ExecuteReader()返回可遍歷整個結果集的對象。

syou在評論中提到錯誤不是因爲ExecuteNonQuery,這是因爲之前的Datareader,因此您必須在處理更新之前關閉它們。

+1

如果你解釋爲什麼海報應該這樣做,這將是一個更好的答案,所以它提供的信息而不僅僅是一個複製/粘貼解決方案。這將有助於海報在未來避免這種相同的錯誤。 –

+0

我已經嘗試過,但它也不起作用!在這張圖片中看到:http://prntscr.com/eszl0g –

+0

錯誤消息告訴你該做什麼:關閉你以前的連接,這是通過一個'DataReader'。 –

0

您正在使用Datareader。數據讀取器將保持連接處於打開狀態直至關閉。如果您使用Data Reader連接,則不能將其用於執行非查詢。

更好地創建一個新的連接和命令對象進行更新。

https://www.codeproject.com/Articles/43438/Connect-C-to-MySQL

+0

我該怎麼做?你能幫助我嗎?,我需要在行中返回的值。 –