教你使用ADO.NET ADOX得到并改变Schema信息

开发 后端
ADOX是ADO.NET的一个扩展,这里将详细的介绍ADO.NET ADOX的运用,希望大家通过看本文会有技术上的提高。

经过长时间学习ADO.NET ADOX,于是和大家分享一下关于ADO.NET ADOX方面的知识,看完本文你肯定有不少收获,希望本文能教会你更多东西。ADO.NET并没有为得到并管理schema信息提供一个完全的对象模式。你应该用ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX)或用每个数据库提供的本地功能来得到并改变Schema信息。ADOX是ADO对象的一个扩展,它包括用来创建和修改Schema的对象。你可以编写适用于各种数据源的代码(不管本地语法有什么不同),因为ADO.NET ADOX是管理schema的一个基于对象的方法。

#T#你可以用一个data reader对象来读(不是设置)简单的schema信息。所有的data reader类(OleDbDataReader、SqlDataReader、OracleDataReader)都提供了一个GetSchemaTable方法,该方法可以读取查询到的列的元数据信息。GetSchemaTable返回一个DataTable对象(格式是每列一行)和固定的一组包含信息的列。返回的元数据可以分成三类:列元数据、数据库特征和列属性。返回的列可以是AllowDBNull、 IsAutoIncrement、ColumnName、IsExpression、IsReadonly和NumericPrecision等。在 MSDN资料中有完整的列表(见附加资源)。

在调用ExecuteReader时,如果你执行KeyInfo命令,那么GetSchemaTable方法就可以返回更精确的数据。你可以将KeyInfo行为同缺省的行为结合起来,执行一个单独的命令并得到schema和数据:

  1. reader = cmd.ExecuteReader( _  
  2. CommandBehavior.KeyInfo Or _  
  3. CommandBehavior.CloseConnection) 

只有执行KeyInfo,IsKey、BaseTableName、IsAliased、IsExpression和IsHidden字段的值才能被正确返回。如果执行KeyInfo,关键的列(如果有)通常是添加在结果集的底部的,但不给它们返回数据。

尽可能用预先排序的数据

ADO.NET对象模式使我们可以很容易地实现排序。你可以创建一个DataView对象并设置其Sort属性;ADO.net runtime查看新的排序表达式并为视图重编索引。该步骤是在内存中实现的,但速度并不快。排序的花费很高,更重要的是,它并不是个线性操作(linear operation)。对一组数据进行排序需要n*log(n)的计算成本,就是说,随着需要排序的条目数量的增加,直线增加的成本是很大的。因此,你应该限制应用程序中的排序,尽可能地运用预先排序的数据。在Web应用程序中,动态排序对性能的影响是相当大的。既然如此,你就应该设计应用程序,限制对动态排序的需求,并依赖在数据库服务器中写死的算法。除非你在用应用程序的一个可以使复杂性低于n*log(n)极限的特殊的功能,否则避免运用手工排序算法,因为这种算法可能比系统中的算法更糟

责任编辑:田树 来源: 博客
相关推荐

2009-11-13 09:30:28

2009-12-28 15:11:36

ADO.NET专家

2009-11-11 14:04:14

ADO.NET连接池

2009-11-03 14:22:10

ADO.NET Exc

2009-11-13 14:29:13

ADO.NET Mer

2009-11-12 13:26:56

使用ADO.NET参数

2009-12-31 13:50:46

ADO.NET模型

2009-12-21 14:50:47

ADO.NET优化

2009-12-22 15:20:25

ADO.NET功能

2009-12-21 16:53:06

ADO.NET使用说明

2009-12-29 10:36:24

ADO.NET 工具

2009-08-21 16:35:08

使用C#结合ADO.N

2009-12-22 16:35:11

ADO.NET控件

2009-11-04 09:18:12

ADO.NET _Re

2009-11-04 10:07:52

ADO.NET DbP

2009-10-29 10:34:31

ADO.NET使用技巧

2009-11-12 10:15:37

ADO.NET使用

2009-11-13 10:10:07

2009-11-13 14:22:11

ADO.NET Dat

2009-11-13 14:38:45

ADO.NET Dat
点赞
收藏

51CTO技术栈公众号