【问题标题】:Update fields in Access 2010 Database Table更新 Access 2010 数据库表中的字段
【发布时间】:2017-12-12 18:19:14
【问题描述】:

我有一个包含四个表的数据库。我正在尝试更新 Techs 表。为此,我需要读取现有值,将它们存储到内存中,然后将值添加到数据中。当我尝试将值更新回数据库时出现问题,我收到一条错误消息,提示我的更新语句中存在语法错误。

string userName = "Admin";
int closed = 0;
decimal money = 0.00M;

string sql = "Select * From Techs WHERE TechName = @uName";
cmd.CommandText = sql;
cmd.Parameters.Add("@uName", OleDbType.VarChar, 50); cmd.Parameters["@uName"].Value = userName;

cmd.Connection = conn;
dbReader = MakeReader(sql);
while (dbReader.Read())
{
        money = decimal.Parse(dbReader["Money"].ToString());
        closed = int.Parse(dbReader["#Closed"].ToString());
}
dbReader.Close();

//Proof of sucessful read
MessageBox.Show(money + ":" + closed);

string update = "Update Techs SET Money=@money, #Closed=@closed WHERE TechName=@uName";
OleDbCommand updateCmd = new OleDbCommand(update, conn);
updateCmd.Parameters.AddWithValue("@money", money + 12.00M);
updateCmd.Parameters.AddWithValue("@closed", closed + 1);
updateCmd.Parameters.AddWithValue("@uName", userName);
updateCmd.ExecuteNonQuery(); //Error here

错误信息

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:UPDATE 语句中的语法错误。

【问题讨论】:

    标签: c# database ms-access


    【解决方案1】:

    Money 是关键字,#Closed 包含特殊字符,两者都要加括号:

    string update = "Update Techs SET [Money]=@money, [#Closed]=@closed WHERE TechName=@uName";
    

    就个人而言,我也会避免将 Money 作为参数名称,但不确定这是否会造成麻烦。

    【讨论】:

    • 非常感谢,这就是问题所在,我是个白痴。
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多