c#更新Access数据库的命令

时间:2015-03-14 12:04:56

标签: c# visual-studio ms-access sql-update

我正在尝试更新访问表中的数据。但是,当我尝试更新时,我一直收到语法错误。下面是我编译的代码。 Textbox37是需要更新的。

string constr1;

constr1 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\Documents\\data.accdb;Jet OLEDB:Database";

string cmdstr = "Update Log(Notes,Status)Values(@a,@b) Where LogIncNum='" + LogInc + "'";

using (OleDbConnection con1 = new OleDbConnection(constr1))
{
    using (OleDbCommand com = new OleDbCommand(cmdstr, con1))
    {
        com.CommandType = CommandType.Text;                       
        com.Parameters.AddWithValue("@a", textBox37.Text);
        com.Parameters.AddWithValue("@b", "Active");

        con1.Open();
        com.ExecuteNonQuery();  
    }
}

2 个答案:

答案 0 :(得分:2)

更新语句的正确语法是

UPDATE table SET field1=value1, field2=value2 WHERE field3=value3

您使用的语法错误,因此语法错误

作为旁注,您是否忘记使用WHERE条件的参数?
对要包含在查询中的每个值使用参数始终是正确的。只记得把它放在正确的顺序,因为OleDb不能通过名称识别参数,而是在Parameters集合中使用严格的位置顺序,所以第一个被分配给第一个参数占位符,依此类推。

答案 1 :(得分:0)

简便方法

using (var aq_pension = new System.Web.UI.WebControls.SqlDataSource())
        {
            aq_pension.ProviderName = "System.Data.OleDb";
            aq_pension.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/stat_tresor/stat_tresor/stat_tresor/db/stat1.mdb";

            aq_pension.UpdateCommand = "UPDATE tableaux1 SET nbre=0, montant_mois=0,total=0 WHERE code <>''";

            aq_pension.Update();
        }