首页 > 解决方案 > ADO 再次执行 SQL Server 不报告参照完整性约束

问题描述

有证据表明,当使用 ADO 删除 SQL Server 中的记录时,它不会报告参照完整性约束。

代码:

Dim ado As New adodb.Connection
Dim sConnectionString As String

ON error goto eh

sConnectionString = "Provider=SQLOLEDB;Data Source=hillhead-100;Initial Catalog=XXXXXXXX;UID=XXXXXXXXXXXXX;PWD=XXXXXXXXXXXX;"
ado.Open (sConnectionString)
ado.execute "DELETE FROM tblMasterChecklist  WHERE ChecklistID = 'DE'"

我收到此错误:

错误 = 3001,应用程序错误 3001,参数类型错误、超出可接受范围或相互冲突。

只要不存在子记录,相同的命令就可以正常工作

这似乎是驱动程序的限制。

有人可以就此提出建议吗?

标签: sql-serverms-accessodbcado

解决方案


一方面,不要使用SQLOLEDB. 该驱动程序是 MDAC 的一部分,它可以方便地安装在自 Windows XP SP2 以来的所有 Windows 机器上,但也可以追溯到 Windows XP SP2,并且非常过时。它已被弃用,并且没有实现许多基本功能,例如支持“现代”数据类型,例如DateTime2.

相反,请使用MSOLEDBSQLSQL 服务器当前支持的唯一 OLEDB 提供程序。

您应该可以在此处下载最新版本。

或者,使用 ODBC 驱动程序,因为 ADO 支持 ODBC 和 OLEDB。


推荐阅读