vb:
用open打开.sql的文件,读取内容就行了。
Open "file.sql" For Output As #1 
然后读到变量中即可

解决方案 »

  1.   

    直接执行如下SQL语句即可:
    master.dbo.xp_cmdshell 'osql -U 用户名 -P 密码 -i c:\***.sql'
      

  2.   

    VB中用shell调用isql来执行.shell("isql /S 服务器名 /U 用户名 /P 密码 /i .sql文件名")
      

  3.   

    '当然,你也可以自己写程序实现.例如:'执行指定文件中的 SQL 语句,sDatabase指定用来执行的数据库
    'sProgressBar指定显示处理进度的进度条,sUseTrans指定是否使用事务处理
    Public Function fExecuteSqlFromFile(ByVal sFileName$ _
                                    , ByVal sDataBase As ADODB.Connection _
                                    , Optional ByVal sUseTrans As Boolean = True _
                                    ) As String
        Dim iSqlStr$, iText$
        Dim iReturn As String
        
        
        If sDataBase Is Nothing Then
            iReturn = "数据库服务器不可用"
            GoTo lbExit
        End If
        If sDataBase.State = adStateClosed Then
            iReturn = "未打开数据库服务器"
            GoTo lbExit
        End If
        
        With sDataBase
            On Error GoTo lbFileErr
            Open sFileName For Input As #1
           
            On Error GoTo lbErr
            
                Do While Not EOF(1)
                    Line Input #1, iText
                    If LCase(iText) = "go" Then                 '若所读取的行为'go',则表示已读取一个完整的语句行
                        If iSqlStr <> "" Then .Execute iSqlStr  '执行所读取的语句
                        iSqlStr = ""
                        DoEvents
                    Else
                        iSqlStr = iSqlStr & iText & vbCrLf
                    End If
                    DoEvents
                Loop
            Close #1
            If iSqlStr <> "" Then .Execute iSqlStr
        End With
        
        iReturn = ""
        GoTo lbExit
        
    lbFileErr:
        iReturn =error()
        GoTo lbExit
    lbErr:
        iReturn = error()
    lbExit:
        fExecuteSqlFromFile = iReturn
    End Function
      

  4.   

    我想执行的几条语句是这样的:
        set rowcount 10
        select * from table1 where field_ID > 1000
        set rowcount 0
    我想让第二条语句返回一个adodb.recordset对象,以便进行处理,
    但是当我把这三条语句放在一个字符串数组strSQL(2)中, 然后用cmd.execute顺序执行时,第一条语句对第二条语句不起作用,这样我选择的是所有field_ID > 1000记录,而不是我所想要的前十条记录。 用存储过程似乎可以解决这个问题,但用户方出于安全性考虑,不允许我们建立存储过程,那么我该怎么办呢?