2016-09-22 19 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'を追加します。 「偽」、あなたの論理を考えてみます。あなたの_only_はコードがブロックに入るので、それはあなたに嘘をつきません。 – DonBoitnott

+1

あなたの 'return true'文は' if(tbupdaten.Read()) 'の中にあります。外にも何かを返すようにしてください。例えば'else {return false; } ' –

答えて

1

Todo_updaten関数の戻り値の型はboolなので、常にboolの値を返す必要があります。現在のところ、条件が満たされた場合にのみ真となりますが、そうでない場合は何も返されません。どちらが間違っているので、それを克服するためにelse文でfalseを返したり、カスタムロジックを返すことができます。しかし、常に関数からboo値を返すようにしてください。

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

tbupdaten.Read() falseを返す場合にのみ、そのif blockreturnを持っているので、あなたの関数は、何も返しません。

また、データベースを更新するときは、ExecuteReaderの代わりにExecuteNonQueryを呼び出す必要があります。

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あなたが何かを確認したい場合も、影響を受けた行数を返します。

関連する問題