如何使用 Ado.net 获取数据库架构信息

2007-12-06  来源:   浏览次数 5
     在开发的时候有时需要获取数据库架构信息来得到数据库的一些其他信息,比如存储过程、视图、表、字段的类型、备注说明等。通过OleDb.NET数据提供程序可以比较简洁的实现这一点。
  
  一、OleDbConnection的GetOleDbSchemaTable方法
  
  在Ado.net的对象模型的该对象充当了与数据源之间的连接,通过Connection对象来连接数据库或者从数据库断开以释放宝贵的资源。这里我们需要用到的是OleDbConnection对象的GetOleDbSchemaTable 方法,
  
  定义如下:
  
  public DataTable GetOleDbSchemaTable( Guid schema,object[] restrictions);
  
  方法返回一个DataTable对象;
  
  第一个参数是OleDbSchemaGuid的枚举值,是用来指定架构信息类型,可以根据某一个值来决定所需的架构类型,如表、列、视图等,具体可以参考MSDN;
  
  第二个参数为Restrictions的参数,作为一个oject数组数据类型,起到过滤的作用,如果把第二个参数设置为null,那就返回指定的OleDbSchemaGuid枚举的所有信息了。
  
  整个窗体包括:
  
  一个TextBox,用来输入数据库连接字符串;
  
  一个DataGrid,用来显示架构信息;
  
  查看按钮,点击获取架构信息。
  
  这里以SqlServer 的Northwind数据库为例,在查看按钮事件中进行了如下处理:
  
  private void buttonOK_Click(object sender, System.EventArgs e)
  
  {
  
     this.dataGridSchema.DataSource = GetSqlDbSchemaUsingOleDbConnection (this.textBoxConnString.Text.Trim());
  
  }
  
  通过文本框把连接字符串传入GetSqlDbSchemaUsingOleDbConnection函数,由OleDbConnection对象来连接数据库,并获取构架信息,
  
  private DataTable GetSqlDbSchemaUsingOleDbConnection(string connString)
  
  {
  
     OleDbConnection myConn = new OleDbConnection(connString);
  
     myConn.Open();
  
     DataTable table1 = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null);
  
     myConn.Close();
  
     return table1;
  
  }
  
  上面的函数返回数据库的所有字段,下面来看看如何通过Restrictions参数来过滤信息;
  
  参数数据可以定义为
  
  object[] restrictions =
  
  new object[]{"TABLE_CATALOG","TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME"};
  
  具体可参考MSDN文档。
  
  对上面函数进行修改,我们只获取Northwind 数据库Customers表的信息:
  
  private DataTable GetSqlDbSchemaUsingOleDbConnection(string connString)
  
  {
  
     OleDbConnection myConn = new OleDbConnection(connString);
  
     object [] restrictions = new object[]{"Northwind","dbo","Customers",null};
  
     myConn.Open();
  
     DataTable table1 = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,restrictions);

本新闻共3页,当前在第1页  1  2  3  

上一篇:ADO.NET研究 -- D..    下一篇:.NET中调用DataWi..

相关主题:

网友评论