2016-09-22 22 views
0

我想在表用戶中更新「todo」,其中值「username」與我的代碼_naam中的值相同。我有什麼到目前爲止(從我的「讀」命令那種複製):並非所有的代碼路徑返回值:使用C#在MySQL中更新值數據庫#

private bool Todo_updaten(string _todo) 
    { 
     db_connection(); 
     MySqlCommand cmdUpdate = new MySqlCommand(); 
     cmdUpdate.CommandText = "UPDATE `user` SET `todo`[email protected] WHERE `username` LIKE '" + _naam + "'"; 
     cmdUpdate.Parameters.AddWithValue("@todo", _todo); 
     cmdUpdate.Connection = connect; 
     MySqlDataReader tbupdaten = cmdUpdate.ExecuteReader(); 
     if (tbupdaten.Read()) 
     { 
      tbTodo.Text = tbupdaten.GetString(0); 
      connect.Clone(); 
      return true; 
     } 

我在布爾todo_updaten,它說得到一個錯誤。

+1

在方法結尾添加另一個'return'。假設,假設你有邏輯。你的_只返回_if_代碼進入該塊,所以它不會騙你。 – DonBoitnott

+1

你的'return true'語句在你的'if(tbupdaten.Read())'裏面。一定要回到外面去。例如'else {return false; }' –

回答

1

由於Todo_updaten函數的返回類型爲bool,所以您始終需要返回其中的任何bool值。目前,只有在條件滿足的情況下,你纔會返回正確的狀態,但如果沒有,那麼你不會返回任何東西。這是錯誤的,所以你可以在else語句中返回false來克服它,或者你的任何定製邏輯。但請確保您始終返回函數的值。

if (tbupdaten.Read()) 
    { 
     tbTodo.Text = tbupdaten.GetString(0); 
     connect.Clone(); 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
1

你的函數不返回如果tbupdaten.Read()返回false任何東西,因爲你只有在一個if blockreturn

此外,在更新數據庫時,您應該撥打ExecuteNonQuery而不是ExecuteReader

private bool Todo_updaten(string _todo) 
{ 
    db_connection(); 
    MySqlCommand cmdUpdate = new MySqlCommand(); 
    cmdUpdate.CommandText = "UPDATE `user` SET `todo`[email protected] WHERE `username` LIKE @naam"; 
    cmdUpdate.Parameters.AddWithValue("@todo", _todo); 
    cmdUpdate.Parameters.AddWithValue("@naam", _naam); 
    cmdUpdate.Connection = connect; 
    cmdUpdate.ExecuteNonQuery(); 
    return true;  
} 

ExecuteNonQuery也返回受影響的,如果你要檢查什麼的行數。