数据访问是任何应用程序的基础在本文中我将说明如何用C#和ADONET访问基于SQL Server的数据以及如何在一个数据绑定的网格控件中显示数据我用一个简单的C#应用程序为例
ADONET结构
使用ADONET不需要维持一个连接另外在ADONET中只需用几行代码你就可以从一个数据源转到另一个数据源
ADONET的核心对象有Command Connection DataReader和DataAdapter它们是NET中所有数据操作的基础
核心ADONET命名空间
SystemData是其它命名空间的基础并补充DataTable DataColumn DataView和Constraints对象
SystemDataCommon定义由各种数据提供者共享的普通对象包括DataAdapter DataColumnMapping和DataTableMapping它为数据提供者所用包含用于访问数据源的集合
SystemDataOleDb定义你用来连接到数据源并修改各种数据源中的数据的对象它作为普通数据提供者而编写由包含SQL Server微软Oracle OLE DB Provider和微软Jet Provider驱动器的NET Framework提供执行当你需要连接到许多不同的数据源时就会用到这个命名空间并且你希望达到比提供者更佳的性能
SystemDataSqlClient直接利用SQL Server应用程序接口提供比更为普通的SystemDataOleDb更佳的性能这是一个专门为SQL Server 及以上版本建立的提供者命名空间
SystemDataSqlTypes专门为SQL Server的数据类型提供类这个命名空间专为SQL Server而设计并提供比其它命名空间更佳的性能但只应用于SQL Server后端
SystemDataOdbc处理所有兼容ODBC驱动器只有NET Framework 支持这个命名空间所以安装新版Framework就能获得它
数据网格实例
给表格dataGrid增加一个数据网格如图所示为了让列表A中的样本代码能够运行需要利用下面的命名空间
using SystemData;
using SystemDataOleDb;
上面的代码定义了两个变量strConn和strSQLStrConn使用OLEDB设定利用JET数据库所需的连接字符串并指向当地计算机的Northwindmdb数据库位置StrSQL指定我想在Access数据库(Northwindmdb)上运行的查询
接下来我定义OleDBDataAdapter对象da并将它提交给查询语句(strSQL)和连接字符串(strConn)注意我在例子中没有建立一个连接(Connection)对象
然后我定义数据组ds它被用来从网格控件中的用户表(Customers)中获得实际数据我使数据网格控件dataGrid的DataMember特性指向到我获得数据的表格并将控件DataSource的特性设定给DataSetds(DataMember特性获得/设定DataSource中的一个绑定控件的表格DataSource特性获得/设定用来安装控件的数据源)当你运行列表A中的代码时结果如图所示
我显示C:DataAccessNorthwindmdb数据库中的数据只看到我在选择语句中选中的栏如果选择的列数或栏数超过页面的大小网格控件会自动显示滚动条
现在你了解了在C#应用程序中使用ADONET以及建立一个数据网格控件显示查询返回数据的基本原理了