zoukankan      html  css  js  c++  java
  • 如何实现项目脚本的批量生成

    需求:

      一个大的信息管理系统是由各个单独的子系统组成的,有某些时候,只需要一部份的模块。这样在发布数据库的时候,就存在有比较大的问题。

      只有两种方式:

          1。不管客户需不需要,把整个数据库给他。

          2。查找相应的表,存储过程,视图,函数。(如果没有记录,基本上是不可完成的工作,你愿意花大量的时间除外。)就算是你有记录,也得花不少时间。

    解决思路:

      在维护一个数据对象表的同时,能根据对象自动产生脚本应该是一个不错的方法。

    开始动手:

      首先需要引用Com对象,Microsoft SQLDMO Object Library,其实使用这个对象都可以开发出一个企业管理器出来。

      下面是SqlScriptHelper类的实现,比较简单


    ''' <summary>
    ''' 生成脚本的辅助类
    ''' </summary>
    ''' <remarks></remarks>
    Public Class SqlScriptHelper



    Dim s As New SQLDMO.SQLServer2

    ''' <summary>
    ''' 无参数类实例化
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub New()

    End Sub


    ''' <summary>
    ''' 使用数据库连接信息实例化
    ''' </summary>
    ''' <param name="server"></param>
    ''' <param name="user"></param>
    ''' <param name="pwd"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal server As String, ByVal user As String, ByVal pwd As String)
    s.Connect(server.Trim, user.Trim, pwd.Trim)
    End Sub
    ''' <summary>
    ''' 关闭数据链接
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Close()
    s.Close()
    End Sub

    ''' <summary>
    ''' 获取数据库对象脚本
    ''' </summary>
    ''' <param name="dbName">数据库名称</param>
    ''' <param name="objectName">对象名称</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetScript(ByVal dbName As String, ByVal objectName As String) As String
    Return Me.GetScript(dbName, objectName, True)
    End Function


    ''' <summary>
    ''' 获取数据库对象脚本
    ''' </summary>
    ''' <param name="dbName">数据库名称</param>
    ''' <param name="objectName">对象名称</param>
    ''' <param name="isDrop">是否生成移除对象的脚本</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function GetScript(ByVal dbName As String, ByVal objectName As String, ByVal isDrop As Boolean) As String

    Dim keeerp As SQLDMO.Database = CType(s.Databases.Item(dbName), SQLDMO.Database)

    Dim t = keeerp.GetObjectByName(objectName)

    If Not isDrop Then '对象存在则不更新脚本


    Dim str = t.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Triggers _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Indexes _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_All)

    Return str



    Else

    Return t.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Triggers _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Indexes _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_DRI_All _
    Or SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Drops)
    End If

    End Function




    End Class

    GetScript方法就可以根据指定的数据库和数据库中的对象返回相应的脚本,而脚本的选项是由SQLDMO_SCRIPT_TYPE枚举控制的SQLDMOScript_Drops是否生成删除语句,SQLDMOScript_Triggers是否生成触发器,SQLDMOScript_Indexes相关索引等.

    调用就比较简单了,指定连接信息,数据库名称,对象名称,即可!

  • 相关阅读:
    Python 购物车程序(文件版)
    Python 购物车程序
    Python多级菜单显示和登录小接口
    ARM体系结构与编程-第五章
    ARM体系结构与编程-第四章
    ARM的IRQ模式和FIQ模式
    C结构体的初始化和赋值
    ARM体系结构与编程-第三章
    函数调用过程分析
    关于STM32-M3/M4的MSP和PSP
  • 原文地址:https://www.cnblogs.com/zqonline/p/1619594.html
Copyright © 2011-2022 走看看