熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server數據庫對象信息的獲取方法

2022-06-13   來源: SQL Server 

  在開發基於SQL Server數據庫的應用程序時經常會遇到需要知道SQL Server數據庫對象的相關信息的情況例如SQL Server中有哪些數據庫這些數據庫中有哪些數據表每個數據表有哪些字段這些字段是什麼屬性等筆者在開發一個數據庫導入程序時就遇到了這些問題經過一番摸索較好地解決了上述問題現在把實現方法介紹給大家程序界面如下圖所示
  
   開發環境
  本文所列出的代碼在Windows NT (SP)Microsoft Visual Basic Microsoft SQL Server 環境下調試通過
  
   實現思想
  利用SQLDMO(分布式管理對象)來訪問SQL Server數據庫SQLDMO是為Windows x與 Windows NT提供的位OLE對象它為與OLE兼容的應用程序提供了SQL Server管理功能的接口開發者通過DMO就可以直接訪問SQL Server數據對象
  
   實現代碼
  在菜單>工程>引用裡選中Microsoft SQLDMO Object Library
  
  在代碼中定義以下全局變量
  Public oSQLServer As SQLDMOSQLServer
  定義一個SQLDMOSQLServer對象
  Public oCurrentDB As SQLDMODatabase
  定義一個SQLDMODatabase 對象
  Public oCurrentTable As SQLDMOTable
  定義一個SQLDMOTable 對象
  Public SERVER_NAME As String
  用於獲得用戶輸入的SQL Server服務器名稱
  Public USERNAME As String
  用於獲得用戶輸入的用戶名
  Public PASSWORD As String
  用於獲得用戶輸入的密碼
  
  以下為部分關鍵的程序代碼
  
  Private Sub cmd_link_Click() 點擊連接按鈕
  
  Set oSQLServer = CreateObject(SQLDMOSQLServer)
  oSQLServerConnect SERVER_NAME USERNAME PASSWORD
  連接SQL Server服務器SERVER_NAME 為服務器名USERNAME為用戶名PASSWORD為用戶口令
  FillEmptyDatabaseList (True)
  If cob_sqldbListCount > Then
  cob_sqldbListIndex =
  Cob_sqldb_Click
  End If
  
  End Sub
  
  Private Sub FillEmptyDatabaseList(bFill As Boolean)
  獲得SQL Server服務器上的所有數據庫名稱
  If bFill = True Then
  Dim oDB As SQLDMODatabase
  Set oDB = New SQLDMODatabase
  For Each oDB In oSQLServerDatabases
  If oDBSystemObject = False Then
  判斷其不是系統數據庫
  cob_sqldbAddItem oDBName
  把非系統數據庫名稱添加到數據庫信息列表框中
  End If
  Next oDB
  End If
  End Sub
  
  Private Sub Cob_sqldb_Click()
  點擊數據庫信息列表框
  
  Dim oDB As SQLDMODatabase
  Set oDB = oSQLServerDatabases(cob_sqldbList(cob_sqldbListIndex))
  If oCurrentDB Is Nothing Then
  Set oCurrentDB = oDB
  Else
  If oCurrentDBName = oDBName Then
  Exit Sub
  End If
  Set oCurrentDB = Nothing
  Set oCurrentDB = oDB
  End If
  FillEmptyTableList (True)
  If cob_sqltableListCount > Then
  cob_sqltableListIndex =
  cob_sqltable_Click
  End If
  
  End Sub
  
  Private Sub FillEmptyTableList(bFill As Boolean)
  獲得當前數據庫中的所有非系統數據表名稱
  If bFill = True Then
  Dim oTable As SQLDMOTable
  For Each oTable In oCurrentDBTables
  If oTableSystemObject = False Then
  判斷其不是系統數據表
  cob_sqltableAddItem oTableName
  把非系統數據表名稱添加到數據表信息列表框中
  End If
  Next oTable
  End If
  End Sub
  
  Private Sub cob_sqltable_Click()
  點擊數據表信息 列表框
  
  Dim oTable As SQLDMOTable
  Set oTable = oCurrentDBTables(cob_sqltableList(cob_sqltableListIndex))
  If oCurrentTable Is Nothing Then
  Set oCurrentTable = oTable
  Else
  If oCurrentTableName = oTableName Then
  Exit Sub
  End If
  Set oCurrentTable = Nothing
  Set oCurrentTable = oTable
  End If
  FillEmptyColsToIndex (True)
  If cob_sqlrecordListCount > Then
  cob_sqlrecordListIndex =
  End If
  
  End Sub
  
  Private Sub FillEmptyColsToIndex(bFill As Boolean)
  獲得數據表中的所有字段的信息
  If bFill = True Then
  Dim oCol As SQLDMOColumn
  Set oCol = New SQLDMOColumn
  For Each oCol In oCurrentTableColumns
  cob_sqlrecordAddItem oColName & & oColDataType
  把字段名稱和字段屬性添加到字段信息列表框中
  Next oCol
  End If
  End Sub
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22095.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.