对于 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 语句结束后找到的字符。
我不认为 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
}
}
当然,正如我所说,这没有考虑并发问题。