使用c#更新MySQL中的值数据库

本文关键字:数据库 MySQL 更新 使用 | 更新日期: 2023-09-27 18:08:29

我想更新表user中的"todo",其中值"username"与我的代码_naam中的值相同。到目前为止,我所做的(有点像从我的"read"命令复制的):

private bool Todo_updaten(string _todo)
    {
        db_connection();
        MySqlCommand cmdUpdate = new MySqlCommand();
        cmdUpdate.CommandText = "UPDATE `user` SET `todo`=@todo 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;
        }

我在bool todo_updaten上得到一个错误,它说:不是所有的代码路径都返回值。

使用c#更新MySQL中的值数据库

因为你的Todo_updaten函数的返回类型是bool,所以你总是需要从它返回任何bool值。目前,只有当条件满足时才返回true,但如果不满足则不返回任何内容。这是错误的,所以你可以在else语句中返回false来克服它,或者任何你的自定义逻辑。但是要确保始终从函数返回boo 1值。

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

如果tbupdaten.Read()返回false,则函数不返回任何内容,因为在该if block中只有return

当你更新数据库时,你应该调用ExecuteNonQuery而不是ExecuteReader

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

如果您想检查任何内容,ExecuteNonQuery还返回受影响的行数。