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