简体   繁体   English

代码运行但不更新数据库

[英]Code runs but doesn't update database

This code is supposed to save some values in textboxes to a specific row. 该代码应将文本框中的某些值保存到特定行。 The code runs just fine with no hiccups, but refuses to actually update the database no matter what I do. 该代码运行良好,没有打ic,但无论我做什么,都拒绝实际更新数据库。

try
{
    using (var con = new OleDbConnection())
    {
        con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Desktop\esoft\gym\gym\bin\Debug\Clients.accdb;";
        con.Open();

        using (var com = new OleDbCommand())
        {
             com.Connection = con;
             com.CommandText = "UPDATE gym SET BMI = @bmi and Health = @health and weight_change_to_healthy_bmi = @weight WHERE ID = @id";

             com.Parameters.AddWithValue("@bmi", bmi.Text);
             com.Parameters.AddWithValue("@health", health.Text);
             com.Parameters.AddWithValue("@weight", change.Text);
             com.Parameters.AddWithValue("@id", id.Text);

             com.ExecuteNonQuery();
         }
     }

     MessageBox.Show("Saved");
 }
 catch (Exception ex)
 {
     MessageBox.Show("Not saved: " + ex.Message);
 }

Any help would be much appreciated. 任何帮助将非常感激。

As Alex mentioned , SET part needs , instead of AND for multiple columns. 如Alex 所述SET部分需要,而不是AND以用于多列。

Check UPDATE syntax 1 ; 检查UPDATE语法 1 ;

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

But I wanna say a few things more; 但是我想说几件事;

  • Don't use AddWithValue as much as you can. 尽量不要使用AddWithValue It may generate unexpected and surprising results sometimes . 有时它可能会产生意外和令人惊讶的结果 Use Add method overload to specify your parameter type and it's size. 使用Add方法重载来指定您的参数类型及其大小。
  • Open your connection just before you execute your command. 在执行命令之前打开连接。 That means, you should open your connection just before your ExecuteNonQuery line. 这意味着,您应该在ExecuteNonQuery行之前打开连接。
  • Based on it's name, ID column should be some numeric value instead of character. 根据名称, ID为一些数字值而不是字符。 Consider to change it's type or consider to change it's column name that refers some character typed column name. 考虑更改其类型或考虑更改引用某些字符键入列名称的列名称。

1: I know I know.. a w3school link 1: 我知道我知道.. w3school链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM