此代码应该将文本框中的某些值保存到特定行.代码运行得很好,没有打嗝,但无论我做什么,都拒绝实际更新数据库.
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); }
任何帮助将非常感激.
正如Alex 所说,SET
部分需要,
而不是AND
多列.
检查UPDATE
语法1 ;
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
但是我想说几件事;
不要AddWithValue
尽可能多地使用.有时它可能会产生意想不到的惊人结果.使用Add
方法重载来指定参数类型及其大小.
在执行命令之前打开连接.这意味着,您应该在ExecuteNonQuery
排队之前打开连接.
根据它的名称,ID
列应该是一些数值而不是字符.考虑更改它的类型或考虑更改它引用某些字符类型列名称的列名.
1:我知道我知道..一个w3school链接