先引用 sql-dmoOption Explicit
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long   '获取客户机主机名的api
Global oRegistry As SQLDMO.Registry     'DMO的注册表对象
Global oSqLServer As SQLDMO.SQLServer   'DMO的数据服务器对象
Global oDatabase As SQLDMO.Database     'DMO的数据库对象
Global oDBFile As SQLDMO.DBFile         'DMO的数据库数据文件对象
Global oLOGFile As SQLDMO.LogFile       'DMO的数据库日志文件对象
Global Const LoginTimeout As Long = 30  '登录超时(秒)
Global bConnectted As Boolean   '数据服务器连接标记
Global Const sDBFileSuffix As String = "_Data"  '数据库数据文件名后缀
Global Const sLogFileSuffix As String = "_Log"  '数据库日志文件名后缀
Global Const sDBFileIniSize As Integer = 1      '数据库数据文件初始大小(单位:M)
Global Const sLogFileIniSize As Integer = 1     '数据库日志文件初始大小(单位:M)
Global Const sDBFileGrowthType As String = SQLDMOGrowth_Percent '数据库数据文件增长方式:按百分比
Global Const sLogFileGrowthType As String = SQLDMOGrowth_MB     '数据库日志文件增长方式:按M字节为单位
Global Const sDBFileGrowthSize As Integer = 10  '数据库数据文件增长大小:10%
Global Const sLogFileGrowthSize As Integer = 1  '数据库日志文件增长大小:1M字节
Global Const sDBFileIsPrimary As Boolean = True '数据库数据文件创建于主程序组
Global Const sDBFileGroup As String = "PRIMARY" '数据库数据文件所在程序组名Global MyDatabase1 As SQLDMO.Database   'DMO的数据库对象
Global MyDatabase2 As SQLDMO.Database   'DMO的数据库对象
Global oUser As SQLDMO.User
Global oDatabaseRole As SQLDMO.DatabaseRole
Public Const messageError = "出错信息..."
Global oLogin As SQLDMO.login'************[ Functions ]********************************
#If Win32 Then
Public Declare Function WNetAddConnection& Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String)
'【返回值】
        'Long,零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERR
        '                        OR,则可用WNetGetLastError取得额外的错误信息
'【参数表】
        'lpszNetPath ----  String,要连接的网络名
        'lpszPassword ---  String,可选的一个密码。如为vbNullString,表示采用当前
        '                        用户的默认密码。如为一个空字串,则不用任何密码
        'lpszLocalName --  String,资源的本地名称。(例如,F: 和 LPT1:)
#End If 'WIN32
'**********<<[ EOF ]>>***********************************'Public logname As String
'Public usname As String
'Public psword As String
Public path As String    '用于传递安装路径
Public Const dbname1  As String = "epcmis"
Public Const dbname2 As String = "epcmis_login"
Public dbname(2) As String
Public sqlname As String
Public username As String
Public password As String
Public MyServer As New SQLDMO.SQLServer
Public MyDatabase As New SQLDMO.Database
Dim vN As Long, vm As Long, IsInit As Boolean
Dim vMs_Integer(29) As Integer, vYuan_Byte(255) As Integer

解决方案 »

  1.   

    '创建数据库,创建成功返回True,失败则返回False
    Public Function FCreateDB(ByVal sDBName As String) As Boolean    'sDBName:新建数据库对象名
        Dim sMDFFile, sLOGFile As String
        Dim Source As String
        Dim sSql1 As String
       
        On Error GoTo Err_Message:
    '    creatdb.Label1.Caption = "正在安装数据库" & UCase(sDBName) & "请稍等……"
    '    creatdb.Label1.Visible = True
        creatdb.MousePointer = vbHourglass
        
    '    Set MyServer = Nothing
    '    Set MyDatabase = Nothing
    '    MyServer.Connect sqlname, username, password 'connect to Server
        Set oDatabase = CreateObject("SQLDMO.Database") '创建数据库对象
        oDatabase.Name = sDBName    '数据库对象命名
        '创建复制 .MDF 文件
        Set oDBFile = CreateObject("SQLDMO.DBFile") '创建数据库数据文件对象
        oDBFile.Name = sDBName & sDBFileSuffix  '数据库数据文件对象命名
        Source = App.path & "\path" & oDBFile.Name & ".MDF"
        sMDFFile = path & oDBFile.Name & ".MDF"  '使用SQL Server注册的存储目录
        oDBFile.PhysicalName = sMDFFile     '数据库数据文件操作系统命名
    '    oDBFile.Size = sDBFileIniSize       '设置数据库数据文件大小
    '    oDBFile.PrimaryFile = sDBFileIsPrimary  '设置数据库数据文件文件组
    '    oDBFile.FileGrowthType = sDBFileGrowthType  '设置数据库数据文件增长类型
    '    oDBFile.FileGrowth = sDBFileGrowthSize  '设置数据库数据文件增长大小
    '    oDatabase.FileGroups(sDBFileGroup).DBFiles.Add oDBFile  '将数据库数据文件加入数据文件组
        FileCopy Source, sMDFFile
        SetAttr sMDFFile, vbNormal
        '创建复制 .LDF 文件
        Set oLOGFile = CreateObject("SQLDMO.LogFile")   '创建数据库日志文件对象
        oLOGFile.Name = sDBName & sLogFileSuffix    '数据库日志文件对象命名
        Source = "f:\data\" & oLOGFile.Name & ".LDF"
    '    oLOGFile.Size = sLogFileIniSize     '设置数据库日志文件大小
        sLOGFile = path & oLOGFile.Name & ".LDF"    '使用SQL Server注册的存储目录
        oLOGFile.PhysicalName = sLOGFile    '数据库日志文件操作系统命名
    '    oLOGFile.FileGrowthType = sLogFileGrowthType    '设置数据库日志文件增长类型
    '    oLOGFile.FileGrowth = sLogFileGrowthSize    '设置数据库日志文件增长大小
    '    oDatabase.TransactionLog.LogFiles.Add oLOGFile  '将数据库日志文件加入日志文件组
        FileCopy Source, sLOGFile
        SetAttr sLOGFile, vbNormal
        
        sSql1 = "sp_attach_db @dbname = N'" + sDBName + "'," + "@filename1 = N'" + sMDFFile + "'," + "@filename2 = N'" + sLOGFile + "'"
        Set MyDatabase = MyServer.Databases("master")
        MyDatabase.ExecuteImmediate sSql1
        MyServer.Disconnect
        
    '    oSqLServer.Databases.Add oDatabase  '将数据库对象加入数据服务器
        FCreateDB = True     '创建成功
        Exit Function
    Err_Message:
        FCreateDB = False    '创建失败
        MsgBox Err.Source & " Error " & Err.Number & ":" & Err.Description  '显示错误信息
    End Function
      

  2.   

    先谢了tzzxj96(BMP),不过以上你说的这些东西我都知道,我只是想知道如何用sql-dmo查询数据库和插入数据。
      

  3.   

    sSql1="insert into table"
        Set MyDatabase = MyServer.Databases("pubs")
        MyDatabase.ExecuteImmediate sSql1
      

  4.   

    这只是一般操作数据库的方法,我是要用sql-dmo。
      

  5.   

    你看看C:\Program Files\Microsoft SQL Server\80\Tools\DevTools\Samples\sqldmo下面的例子,不过例子里面是VC和VB的例子。没有见到有Delphi的例子。
    如果想用sql-dmo.多研究一下VB的代码。在delphi中的调用方式很相似的。而且VB中有个object browser工具可以查资料,主要是能看出函数的原型,在Delphi中调用ole对象时,我都不知道去哪里查某个函数有几个参数,编译也不会提示出来的。只有运行后才知对不对,查看VB的Object Browser就方便多了。
    :)