数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL Server数据库对象信息的获取方法


发布日期:2019年11月08日
 
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

上一篇:一个SQL Server 2000实验的具体说明

下一篇:监测你的SQL SERVER--让瓶颈暴露