以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请问如何捕获到执行sql 的错误?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=141465)

--  作者:houseer
--  发布时间:2019/9/29 17:20:00
--  请问如何捕获到执行sql 的错误?
   用定义sqlcommand 这种形式。执行的sql语句,怎么捕获到sql执行的错误呢。比如这个:

 Try
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "se\\ect * from t_ttttt"
cmd.ExecuteNonQuery
Catch ex As Exception
MessageBox.show(222)
End Try

数据库中没有t_ttttt这个表, 就会提示。   我怎么捕获这个错误?   try好像不管事

--  作者:有点蓝
--  发布时间:2019/9/29 17:22:00
--  
没有办法捕捉。
--  作者:houseer
--  发布时间:2019/9/29 18:11:00
--  
那再请问蓝老师。。。
sqlcommand里没有办法执行多行的语句吗?

insert into table1(1) values(\'111\')
insert into table1(1) values(\'222\')

这样的语句,我放到CommandText,是报错的。。。




--  作者:houseer
--  发布时间:2019/9/29 18:36:00
--  
还有关于sql事务的问题:

Try
    Connections("数据库").BeginTransaction()
    Dim cmd As SQLCommand
    cmd.ConnectionName = "数据库"
    cmd.CommandText = "insert into table1(1) values(\'111\')"
    cmd.ExecuteNonQuery
    cmd.CommandText = "insert into table1(1) values(\'222\')"
    cmd.ExecuteNonQuery
    Connections("数据库").Commit
Catch ex As Exception
    Connections("数据库").Rollback()
    MessageBox.show(2)
End try


老师着语句哪有问题啊?  那俩insert死活不执行。
[此贴子已经被作者于2019/9/29 18:36:34编辑过]

--  作者:有点蓝
--  发布时间:2019/9/29 20:19:00
--  
如果是SqlServer,把多个语句使用分号隔开即可

insert into table1(1) values(\'111\');insert into table1(1) values(\'222\')

直接把sql复制到数据库里能不能执行?


--  作者:houseer
--  发布时间:2019/9/29 20:54:00
--  
   噢,加分号可以了。     麻烦版主在看看事务是怎么回事
--  作者:有点蓝
--  发布时间:2019/9/29 21:10:00
--  
事务没有问题
--  作者:houseer
--  发布时间:2019/9/29 21:15:00
--  
  汗。。 少个new, 发现事务里的代码不会提示错误了。。。