【发布时间】:2009-09-11 14:02:51
【问题描述】:
我正在 VB.net 中开发一个项目,该项目采用包含 T-SQL 的大型文本文件并针对本地 SQL 数据库执行它们,但我遇到了错误处理方面的问题。
我正在使用以下技术:
- VB.net
- 框架 3.5
- SQL Express 2005
我尝试执行的 SQL 大多是直截了当的,但我的应用程序完全不知道架构或其中包含的数据。例如:
UPDATE mytable SET mycol2='data' WHERE mycol1=1
INSERT INTO mytable (mycol1, mycol2) VALUES (1,'data')
UPDATE mytable SET mycol2='data' WHERE mycol1=2
INSERT INTO mytable (mycol1, mycol2) VALUES (1,'data')
UPDATE mytable SET mycol2='data' WHERE mycol1=3
以上是我正在执行的事情的一个示例,但这些文件每个将包含大约 10,000 到 20,000 条语句。
我的问题是,当使用 sqlCommand.ExecuteNonQuery() 时,我收到了一个异常,因为第二个 INSERT 语句将命中表上的主键约束。
我需要知道发生了这个错误并记录它,还需要处理任何后续语句。我尝试将这些语句包装在 TRY/CATCH 块中,但我无法找到处理错误的方法,然后继续处理其他语句。
查询分析器似乎以这种方式运行,但在使用 sqlCommand.ExecuteNonQuery() 时不会。
那么是否有一个 T-SQL 等效于“Resume Next”或其他一些我可以在不引入大量字符串处理的情况下做到这一点的方式?
非常感谢任何帮助。
【问题讨论】:
标签: sql sql-server vb.net tsql