以前的学习经历...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
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
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