0

对于 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 上做类似的事情(使用 OleDbConnection)?

这样做我得到了

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

4

1 回答 1

1

我不认为 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
     }
}

当然,正如我所说,这没有考虑并发问题。

于 2012-11-30T10:14:28.727 回答