对于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语句结束后找到的字符。
答案 0 :(得分:1)
我认为Jet / ACE OleDB引擎不具备与此类问题相同的T-SQL语法。
如果记录存在,您应该选择检查INSERT或UPDATE的长路径 但是,作为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
}
}
当然,正如我所说,这并没有考虑到并发性问题。