利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息

本文介绍了一种通过OleDb的GetOLEDBSchemaTable方法来获取数据库中的表、视图、存储过程等信息的方法。该方法能够帮助开发者更好地了解数据库结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们可以利用OleDb的GetOLEDBSchemaTable方法得到数据库的所有视图,表,存储过程等信息。

GetDataBaseSchema.aspx

 1ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ Page Language="vb" AutoEventWireup="false" Codebehind="GetDataBaseSchema.aspx.vb" 
 2ExpandedBlockEnd.gifInherits="aspxWeb.GetDataBaseSchema"
%> 
 3None.gif<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
 4None.gif<HTML> 
 5None.gif<HEAD> 
 6None.gif<title>GetDataBaseSchama</title> 
 7None.gif<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> 
 8None.gif<meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> 
 9None.gif<meta name="vs_defaultClientScript" content="JavaScript"> 
10None.gif<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
11None.gif</HEAD> 
12None.gif<body MS_POSITIONING="GridLayout"> 
13None.gif<form id="Form1" method="post" runat="server"> 
14None.gif<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid><br> 
15None.gif<asp:DataGrid id="DataGrid2" runat="server"></asp:DataGrid><br> 
16None.gif<asp:DataGrid id="DataGrid3" runat="server"></asp:DataGrid><br> 
17None.gif<asp:DataGrid id="DataGrid4" runat="server"></asp:DataGrid><br> 
18None.gif<asp:DataGrid id="Datagrid5" runat="server"></asp:DataGrid><br> 
19None.gif<asp:DataGrid id="Datagrid6" runat="server"></asp:DataGrid> 
20None.gif</form> 
21None.gif</body> 
22None.gif</HTML> 


GetDataBaseSchema.aspx.vb

None.gifImports System 
None.gif
Imports System.Data 
None.gif
Imports System.Data.OleDb 
None.gif
ExpandedBlockStart.gifContractedBlock.gif
Public Class GetDataBaseSchemaClass GetDataBaseSchema 
InBlock.gif
Inherits System.Web.UI.Page 
InBlock.gif
Protected WithEvents DataGrid2 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
Protected WithEvents DataGrid3 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
Protected WithEvents DataGrid4 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
Protected WithEvents Datagrid5 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
Protected WithEvents Datagrid6 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid 
InBlock.gif
ContractedSubBlock.gifExpandedSubBlockStart.gif
Web Form Designer Generated Code#Region " Web Form Designer Generated Code " 
ExpandedSubBlockStart.gifContractedSubBlock.gif
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()Sub InitializeComponent() 
InBlock.gif
ExpandedSubBlockEnd.gif
End Sub
 
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
InBlock.gif
Handles MyBase.Init 
InBlock.gifInitializeComponent() 
ExpandedSubBlockEnd.gif
End Sub
 
InBlock.gif
ExpandedSubBlockEnd.gif
#End Region
 
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
InBlock.gif
Handles MyBase.Load 
InBlock.gif
''如何得到数据库中的架构信息? 
InBlock.gif'
'GetOLEDBSchemaTable函数有两个方法: 
InBlock.gif'
'OLEDBSchemaGUID 
InBlock.gif'
'Restrictions 
InBlock.gif'
'参数OLEDBSchemaGUID 的成员:Tables, Procedures, Views, Columns, Catlogs 等 
InBlock.gif'
'参数restrictions为限制条件,是一个对象数组,原来过虑架构结果信息, 
InBlock.gif'
'每一个对象映射到所返回的datacolumn的值。 
InBlock.gif

InBlock.gif
InBlock.gif
Dim strCnn As String 
InBlock.gifstrCnn 
= "Provider=SqlOLEDB; Data Source=.\NetSDK; Initial Catalog=pubs;User ID=sa;Password=;" 
InBlock.gif
Dim dataConn As New OleDbConnection(strCnn) 
InBlock.gif
Try 
InBlock.gifdataConn.Open() 
InBlock.gif
Dim schemaTable As DataTable 
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing
InBlock.gif
''得到全部的表、视图 
InBlock.gif
DataGrid1.DataSource = schemaTable 
InBlock.gifDataGrid1.DataBind() 
InBlock.gif
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {NothingNothingNothing"TABLE"}) 
InBlock.gif
''得到全部的用户表,用户表类型为Table,进行过虑 
InBlock.gif
DataGrid2.DataSource = schemaTable 
InBlock.gifDataGrid2.DataBind() 
InBlock.gif
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {NothingNothingNothing"VIEW"}) 
InBlock.gif
''得到全部的视图 
InBlock.gif
DataGrid3.DataSource = schemaTable 
InBlock.gifDataGrid3.DataBind() 
InBlock.gif
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Procedures, Nothing
InBlock.gif
''得到全部的存储过程 
InBlock.gif
DataGrid4.DataSource = schemaTable 
InBlock.gifDataGrid4.DataBind() 
InBlock.gif
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Provider_Types, Nothing
InBlock.gif
''得到全部支持的数据类型 
InBlock.gif
Datagrid5.DataSource = schemaTable 
InBlock.gifDatagrid5.DataBind() 
InBlock.gif
InBlock.gifschemaTable 
= dataConn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, Nothing
InBlock.gifDatagrid6.DataSource 
= schemaTable 
InBlock.gifDatagrid6.DataBind() 
InBlock.gif
Catch ex As Exception 
InBlock.gifResponse.Write(ex.Message.ToString()) 
InBlock.gif
Finally 
InBlock.gifdataConn.Close() 
InBlock.gif
End Try 
InBlock.gif
ExpandedSubBlockEnd.gif
End Sub
 
InBlock.gif
ExpandedBlockEnd.gif
End Class

转载于:https://www.cnblogs.com/wlq2000/archive/2006/03/26/359207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值