应用程序直接执行*.sql脚本?

sikeen 2004-08-27 02:06:35
T-sql脚本保存成*.sql文档,有没有办法直接在应用程序里直接调用该脚本执行?谢谢各位大虾^_^
...全文
181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sikeen 2004-08-27
  • 打赏
  • 举报
回复
严重感谢各位,最后采用的解决方法是:

用isql.exe调用脚本处理,采用批处理文件
isql -S abc -U sa -P -d test -i D:\temp\Update.sql

参数说明如下:
-S :服务器名称;
-U :用户名;
-P :密码;
-d :数据库名称;
-i :sql脚本路径;

最后用rar制作安装文件执行。
horsefly 2004-08-27
  • 打赏
  • 举报
回复
读进来,然后在ado中把它当成存储过程来执行....
sikeen 2004-08-27
  • 打赏
  • 举报
回复
难怪觉着不对劲,俺再试试-_-
sikeen 2004-08-27
  • 打赏
  • 举报
回复
to windindance(风舞轻扬) :
-S、-P等后面是否要加双引号?
俺的服务器名称是abc
用户sa ,无密码,
数据库PHTest

象俺下面这样对不对?

Dim rst As New ADODB.Recordset
Set rst.ActiveConnection = cnn
rst.Open ("osql -Sabc -P -Usa -dPHTest -iD:\test\Query.sql")

鞠躬:):)
windindance 2004-08-27
  • 打赏
  • 举报
回复
不是,我记错了,用ShellEXecute调用外部程序osql去执行。
pancult 2004-08-27
  • 打赏
  • 举报
回复
recordest
sikeen 2004-08-27
  • 打赏
  • 举报
回复
to windindance(风舞轻扬) :
是用什么open啊?connection or recordset? 谢谢啦~~~~
Apple200228 2004-08-27
  • 打赏
  • 举报
回复
'以下代码,仅供参考
Public Function BuildData(ByVal SQLPath_File As String, ByVal strServerName As String, ByVal strLoginID As String, ByVal strPassword As String)
Dim l_str_sql As String
Dim l_str_Line As String
Dim l_int_FileNum As Integer
Dim l_str_SqlView As String
Dim t_conDb As New ADODB.Connection
Dim strCon As String
Dim rstTmp As New ADODB.Recordset
Dim strDiskID As String

Dim strcoName As String
Dim strSerial As String
Dim strRegDate As Date
Dim strEndDate As Date
Dim lngZong As Long

'On Error GoTo PROC_ERR
strCon = "Driver={SQL Server}" & _
";Server=" & strServerName & _
";database=Master" & _
";uid=" & strLoginID & "" & _
";pwd=" & strPassword

t_conDb.CursorLocation = adUseClient
t_conDb.CommandTimeout = 30
t_conDb.ConnectionString = strCon
t_conDb.Open
t_conDb.Execute " CREATE DATABASE kysL "
strCon = "Driver={SQL Server}" & _
";Server=" & strServerName & _
";database=kysl" & _
";uid=" & strLoginID & "" & _
";pwd=" & strPassword
t_conDb.Close
t_conDb.ConnectionString = strCon
t_conDb.Open
Screen.MousePointer = vbHourglass

On Error Resume Next

l_int_FileNum = FreeFile
l_str_sql = ""
Open SQLPath_File For Input As #l_int_FileNum

Do Until EOF(l_int_FileNum)
Line Input #l_int_FileNum, l_str_Line

If UCase(Trim(l_str_Line)) = "GO" Then
If InStr(1, l_str_sql, "*/") = 0 Then
l_str_SqlView = Trim(l_str_sql)
Else
l_str_SqlView = Trim(Mid(l_str_sql, InStr(1, l_str_sql, "*/") + 2))
End If


t_conDb.Execute l_str_sql, , adCmdText + adExecuteNoRecords
l_str_sql = ""
Else
l_str_sql = l_str_sql + l_str_Line
End If
Loop


Close #l_int_FileNum

Screen.MousePointer = vbDefault


Exit Function

ErrTrans:

Screen.MousePointer = vbDefault

End Function
windindance 2004-08-27
  • 打赏
  • 举报
回复
open("osql -Sserver -Ppassword -Usa -ddatebase -ifile.sql");
注意:区分大小写
cso 2004-08-27
  • 打赏
  • 举报
回复
9494把文件读到sql字符串中执行
sikeen 2004-08-27
  • 打赏
  • 举报
回复
是一个更新存储过程的脚本,用字串不行,试过了...
starsoulxp 2004-08-27
  • 打赏
  • 举报
回复
把文件读到sql字符串中执行

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧