C# 在access db的一条语句中插入或更新

C# 在access db的一条语句中插入或更新,c#,database,ms-access,C#,Database,Ms Access,我正在尝试编写一个sql语句,以便可以更新(如果记录已经存在)或通过OleDBCommand将数据记录插入access db sql语句: string sql = "IF EXISTS (SELECT * FROM tblMitarbeiter_Arbeitsform WHERE (fkLogin = '" + _Login.ToUpper() + "') AND (fkIdArbeitsform = " + dr.fkIdArbeitsform + "))"; sql +=

我正在尝试编写一个sql语句,以便可以更新(如果记录已经存在)或通过OleDBCommand将数据记录插入access db

sql语句:

string sql = "IF EXISTS (SELECT * FROM tblMitarbeiter_Arbeitsform WHERE (fkLogin = '" + _Login.ToUpper() + "') AND (fkIdArbeitsform = " + dr.fkIdArbeitsform  + "))";
       sql += " UPDATE tblMitarbeiter_Arbeitsform SET (Prozent = " + dr.Prozent + ")";
       sql += " WHERE (fkLogin = '" + _Login.ToUpper() + "') AND (fkIdArbeitsform = " + dr.fkIdArbeitsform + ")";
       sql += " ELSE INSERT INTO tblMitarbeiter_Arbeitsform (fkLogin, fkIdArbeitsform, Prozent) VALUES ('" + _Login.ToUpper() + "', " + dr.fkIdArbeitsform + ", " + dr.Prozent + ")";


oCmd = new OleDbCommand(sql, getOekobonusConnection());
oCmd.ExecuteScalar();
//oCmd.ExecuteNonQuery();

ExecuteScalar和ExecuteOnQuery都不工作。我做错了什么?

Access SQL中没有对流结构的控制,因此无法执行IF。您必须拆分逻辑并在代码中进行测试,然后发布相应的更新或插入。

“不工作”-更具体地说,如果使用ExecuteOnQuery执行它,您会看到什么错误消息?正如Mitch所说,您应该提供更多的信息来复制。如果您获取生成的SQL并直接在Access中运行它,它是否有效?MS Access使用基于文件的数据库,一次不能执行多个SQL语句。