此代码应该将文本框中的某些值保存到特定行。代码运行得很好,没有打嗝,但无论我做什么,都拒绝实际更新数据库。
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);
}
非常感谢任何帮助。
答案 0 :(得分:5)
作为Alex mentioned,SET
部分需要,
代替AND
多个列。
检查UPDATE
syntax 1 ;
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
但我想多说一些事情;
AddWithValue
。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。ExecuteNonQuery
行之前打开您的连接。ID
列应该是一些数字值而不是字符。考虑更改它的类型或考虑更改它引用某些字符类型列名称的列名。1:我知道我知道..一个w3school链接