代码改变世界

以前的学习经历...VB中如何执行sql批处理文件

2010-05-31 17:24  DeguangLi  阅读(433)  评论(0编辑  收藏  举报

2005年12月29日 22时40分

今天逛中心论坛看见有人问如何在VB中执行整个sql文件,偶试验了一下,可以做到! 基本的思路是这样的,读取sql文本,执行.(有点像废话..) 在这里要注意一个问题:"go",在sql批处理文本中,用"go"代表一个批处理命令的结束,也就是发送给服务器执行,而VB的ADO对象集合不支持批处理,当执行到"go"时会出错.我们可以判断当前读取行的内容是否为"go",如果是就证明前面的为一组sql命令,就马上执行掉,再读取下一批命令再执行,直到整个文本结束.下面通过一个例子说明一下.

test.sql内容:

use pubs
go
declare @a int
set @a=1
select @a
go

VB代码:

Dim con As New ADODB.Connection
Dim sql As String '存储一批sql命令
Dim temp As String '临时变量,存放sql文本每一行的内容
con.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;initial Catalog=pubs;Data Source=X32" '打开连接
Open "test.sql" For Input As #1 '打开文件
    While Not EOF(1)
        Line Input #
1, temp                      '读取一行数据放到temp变量
        If Ucase(Trim(temp)) = "GO" Then         '如果读取到的为"go"就执行掉"go"前面的sql命令.
            con.Execute sql
            sql 
= Empty                          '清空上次执行的命令
        Else
            sql 
= sql & temp & Chr(10& Chr(13'连接sql命令
        End If
    
Wend
Close #
1