当前位置: 网学 > 编程文档 > SQL SERVER > 正文

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

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

北京跟踪与通信技术研究所 牛晓华 王 荣

在开发基于SQL Server数据库的应用程序时,经常会遇到需要知道SQL Server数据库对象的相关信息的情况,例如SQL Server中有哪些数据库,这些数据库中有哪些数据表,每个数据表有哪些字段,这些字段是什么属性等。笔者在开发一个数据库导入程序时就遇到了这些问题,经过一番摸索,较好地解决了上述问题,现在把实现方法介绍给大家。程序界面如下图所示。

1. 开发环境

本文所列出的代码在Windows NT 4.0(SP6)、Microsoft Visual Basic 6.0、Microsoft SQL Server 2000环境下调试通过。

2. 实现思想

利用SQL-DMO(分布式管理对象)来访问SQL Server数据库。SQL-DMO是为Windows 9x与 Windows NT提供的32位OLE对象,它为与OLE兼容的应用程序提供了SQL Server管理功能的接口,开发者通过DMO就可以直接访问SQL Server数据对象。

3. 实现代码

在“菜单->工程->引用”里选中“Microsoft SQLDMO Object Library”。

在代码中定义以下全局变量:

Public oSQLServer As SQLDMO.SQLServer

’定义一个SQLDMO.SQLServer对象

Public oCurrentDB As SQLDMO.Database

’定义一个SQLDMO.Database 对象

Public oCurrentTable As SQLDMO.Table

’定义一个SQLDMO.Table 对象

Public SERVER_NAME As String

’用于获得用户输入的SQL Server服务器名称

Public USERNAME As String

’用于获得用户输入的用户名

Public PASSWORD As String

’用于获得用户输入的密码



以下为部分关键的程序代码:

Private Sub cmd_link_Click()

’点击“连接”按钮



Set oSQLServer = CreateObject(“SQLDMO.SQLServer”)

oSQLServer.Connect SERVER_NAME, USERNAME, PASSWORD

’连接SQL Server服务器,SERVER

_NAME 为服务器名,USERNAME为用户名,PASSWORD为用户口令

FillEmptyDatabaseList (True)

If cob_sqldb.ListCount > 0 Then

cob_sqldb.ListIndex = 0

Cob_sqldb_Click

End If



End Sub

Private Sub FillEmptyDatabaseList(bFill As Boolean)

’获得SQL Server服务器上的所有数据库名称

If bFill = True Then

Dim oDB As SQLDMO.Database

Set oDB = New SQLDMO.Database

For Each oDB In oSQLServer.Databases

If oDB.SystemObject = False Then

’判断其不是系统数据库

cob_sqldb.AddItem oDB.Name

’把非系统数据库名称添加到数据库信息列表框中

End If

Next oDB

End If

End Sub

Private Sub Cob_sqldb_Click()

’点击“数据库信息”列表框



Dim oDB As SQLDMO.Database

Set oDB = oSQLServer.Databases(cob_sqldb.List(cob_sqldb.ListIndex))

If oCurrentDB Is Nothing Then

Set oCurrentDB = oDB

Else

If oCurrentDB.Name = oDB.Name Then

Exit Sub

End If

Set oCurrentDB = Nothing

Set oCurrentDB = oDB

End If

FillEmptyTableList (True)

If cob_sqltable.ListCount > 0 Then

cob_sqltable.ListIndex = 0

cob_sqltable_Click

End If



End Sub

Private Sub FillEmptyTableList(bFill As Boolean)

’获得当前数据库中的所有非系统数据表名称

If bFill = True Then

Dim oTable As SQLDMO.Table

For Each oTable In oCurrentDB.Tables

If oTable.SystemObject = False Then

’判断其不是系统数据表

cob_sqltable.AddItem oTable.Name

’把非系统数据表名称添加到数据表信息列表框中

End If

Next oTable

End If

End Sub

Private Sub cob_sqltable_Click()

’点击“数据表信息” 列表框



Dim oTable As SQLDMO.Table

Set oTable = oCurrentDB.Tables(cob_sqltable.List(cob_sqltable.ListIndex))

If oCurrentTable Is Nothing Then

Set oCurrentTable = oTable

Else

If oCurrentTab
  • 上一篇资讯: Sql Server基本函数
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号