无效的SQL语句;在SQL语句中使用IF EXISTS()时出错,OLEDB MS ACCESS

时间:2019-10-29 19:23:34

标签: sql ms-access

我正在尝试构建一条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命令?是否有支持存在命令的版本?

1 个答案:

答案 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)
....

我希望这会有所帮助