在一个语句中插入或更新访问数据库

时间:2012-01-19 11:07:47

标签: c# database ms-access

我正试图创建一个sql语句,以便我可以更新(如果记录已存在)或通过OleDBCommand将数据记录插入访问数据库。

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和ExecuteNonQuery都不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:4)

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