当前位置:  开发笔记 > 编程语言 > 正文

代码运行但不更新数据库

如何解决《代码运行但不更新数据库》经验,为你挑选了1个好方法。

此代码应该将文本框中的某些值保存到特定行.代码运行得很好,没有打嗝,但无论我做什么,都拒绝实际更新数据库.

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);
 }

任何帮助将非常感激.



1> Soner Gönül..:

正如Alex 所说,SET部分需要,而不是AND多列.

检查UPDATE语法1 ;

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

但是我想说几件事;

不要AddWithValue尽可能多地使用.有时它可能会产生意想不到的惊人结果.使用Add方法重载来指定参数类型及其大小.

在执行命令之前打开连接.这意味着,您应该在ExecuteNonQuery排队之前打开连接.

根据它的名称,ID应该是一些数值而不是字符.考虑更改它的类型或考虑更改它引用某些字符类型列名称的列名.

1:我知道我知道..一个w3school链接

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有