部1署sq.txt

来自「非常好的.net学习经验记录」· 文本 代码 · 共 82 行

TXT
82
字号
  Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
        MyBase.Install(stateSaver)
        If Not InstallDB() Then
            '失败,反安装
            Me.Uninstall(stateSaver)
            Exit Sub
        End If
        DeleteFile(String.Format("{0}DB.dat", Me.Context.Parameters.Item("targetdir")))
    End Sub

    Public Overrides Sub Uninstall(ByVal stateSaver As System.Collections.IDictionary)
        '执行反安装
        MyBase.Uninstall(stateSaver)
        DeleteFile(String.Format("{0}DB.dat", Me.Context.Parameters.Item("targetdir")))
    End Sub

    Private Sub DeleteFile(ByVal paths As String)
        '删除指定的文件
        Try
            Dim delFile As New System.IO.FileInfo(paths)
            If delFile.Exists Then
                delFile.Delete()
            End If
        Catch ex As Exception
        End Try
    End Sub

    Private Sub CreateSql(ByVal paths As String)
        Dim File As System.IO.StreamWriter
        Dim db As String = String.Format("{0}", Me.Context.Parameters.Item("dbname"))
        Dim path As String = String.Format("{0}", Me.Context.Parameters.Item("targetdir"))
        Try
            Dim s As New System.Text.StringBuilder
            s.Append("use master" & vbCrLf)
            s.Append("" & vbCrLf)
            s.Append("if not exists (select * from sysdatabases where name='" & db & "')" & vbCrLf)
            s.Append(" BEGIN" & vbCrLf)
            s.Append("         create database " & db & vbCrLf)
            s.Append(" END" & vbCrLf)
            s.Append("" & vbCrLf)
            s.Append("if exists (select * from sysdevices where name='DBdisk')" & vbCrLf)
            s.Append(" BEGIN" & vbCrLf)
            s.Append("       EXEC sp_dropdevice 'DBdisk'" & vbCrLf)
            s.Append(" END" & vbCrLf)
            s.Append("Else" & vbCrLf)
            s.Append(" BEGIN" & vbCrLf)
            s.Append("       EXEC sp_addumpdevice 'disk','DBdisk', '" & path & "DB.dat'" & vbCrLf)
            s.Append(" END" & vbCrLf)
            s.Append("" & vbCrLf)
            s.Append("restore database " & db & vbCrLf)
            s.Append("from disk='" & path & "DB.dat'" & vbCrLf)
            s.Append("with replace")
            File = New System.IO.StreamWriter(paths)
            File.Write(s.ToString)
        Catch ex As Exception
        Finally
            File.Close()
        End Try
    End Sub

    Private Function InstallDB() As Boolean
        '安装数据库,调用自动批处理。
        Try
            '创建临时脚本
            CreateSql(String.Format("{0}Mydb2000tp.sql", Me.Context.Parameters.Item("targetdir")))
            '调用osql执行脚本
            Dim sqlProcess As New System.Diagnostics.Process
            sqlProcess.StartInfo.FileName = "osql.exe"
            sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -S {2} -i {3}Mydb2000tp.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("targetdir"))
            sqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            sqlProcess.Start()
            sqlProcess.WaitForExit()  '等待执行
            sqlProcess.Close()
            '删除脚本文件
            DeleteFile(String.Format("{0}Mydb2000tp.sql", Me.Context.Parameters.Item("targetdir")))
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?