我正在尝试构建一条SQL语句,该语句将根据数据库中是否已存在行来插入或更新该行。当我连接到MSSQL服务器时,这种格式似乎可以工作,但是当我使用OLEDB连接到MS Access时,这种格式就不能工作。
IF EXISTS(select * from Resistors where ID = 2816)
update Resistors set
[Part Number]='1234'
where ID = 2816
else
insert into Resistors (
[Part Number]
)
values(
'1234'
)
;
我已使用与MS Access的OLEDB连接验证了这两个sql命令。它们可以正常工作,但现在可以使用命令的IF EXISTS()部分。
update Resistors set
[Part Number]='1234'
where ID = 2816
insert into Resistors (
[Part Number]
)
values(
'1234'
)
IF EXISTS()语句似乎与我在互联网上看到的其他文档匹配,但是我必须做错了事。
这是我运行命令时收到的错误。
Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
这是我的连接字符串
connection.ConnectionString = "Provider = Microsoft Office 12.0 Access Database Engine OLE DB Provider; Data source = " + _database_path;
此连接接口是否不存在exist命令?是否有支持存在命令的版本?
答案 0 :(得分:1)
不幸的是,MS-Access sql不支持ifexists()。
您可以使用 select count() 作为解决方法,如果返回0,则表示不存在。
...
string cmdstr = "SELECT COUNT(*) FROM Resistors where ID = 2816";
....
int count = (int)command.ExecuteScalar();
....
if (count=0)
....
我希望这会有所帮助