C# OLE DB中的UPSERT查询/语法(MS Access)

C# OLE DB中的UPSERT查询/语法(MS Access),c#,sql,oledb,C#,Sql,Oledb,对于SQL Server,我可以这样做 UPDATE [Table] SET b=2, c=3 WHERE a=1; IF @@ROWCOUNT=0 INSERT INTO [Table] (a,b,c) VALUES (1,2,3) 如何在MS Access上执行类似操作(使用OLEDB连接) 这样做,我得到了 在SQL语句结束后找到的字符 我认为Jet/ACE OleDB引擎对于此类问题没有与t-SQL语法等价的语法 您应该仔细检查记录是否存在,然后决定插入或更新。 但是,由于Acces

对于SQL Server,我可以这样做

UPDATE [Table] SET b=2, c=3 WHERE a=1;
IF @@ROWCOUNT=0 
INSERT INTO [Table] (a,b,c) VALUES (1,2,3)
如何在MS Access上执行类似操作(使用OLEDB连接)

这样做,我得到了

在SQL语句结束后找到的字符


我认为Jet/ACE OleDB引擎对于此类问题没有与t-SQL语法等价的语法

您应该仔细检查记录是否存在,然后决定插入或更新。
但是,由于Access主要是一个单用户/本地用户数据库系统,您在执行以下伪代码时应该不会遇到很多问题:

using(OleDbConnection cn = new OleDbConnection(constring))
{
     cn.Open();
     using(OleDbCommand cmd = new OleDbCommand("select count(*) from table where pkID = ?", cn);
     {
        cmd.Parameters.AddWithValue("pk", myID);
        int result = Convert.ToInt32(cmd.ExecuteScalar());
        if(result == 0)
           // do your insert command here
        else
           // do your update command here
     }
}
当然,正如我所说,这并没有考虑并发问题。

不行,看看这个问题