ADO执行再次SQL Server不报告参照完整性约束

问题描述 投票:0回答:2

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

  • 主表:tblMasterChecklist
  • 子表:tblMasterTopic(引用tblmasterchecklist.checklistid

代码:

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-server odbc ado access
2个回答
1
投票

对于一个,请勿使用SQLOLEDB。该驱动程序是MDAC的一部分,自Windows XP SP2以来,该驱动程序可以方便地安装在所有Windows机器上,但其历史可以追溯到Windows XP SP2,并且已经过时。它已弃用,并且未实现许多基本功能,例如,对“ DateTime2”等“现代”数据类型的支持。

相反,使用MSOLEDBSQL,这是SQL Server当前唯一支持的OLEDB提供程序。

您应该能够下载最新版本here

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


0
投票

sConnectionString =“ Provider = MSOLEDBSQL;数据源= xxxxxxxxxxxx;初始目录= xxxxxxxxxxxxx; UID = xxxxxxxxxxx; PWD = xxxxxxxxxxxx;”

© www.soinside.com 2019 - 2024. All rights reserved.