1. 回顾ADO.NET
ADO.NET是一组用于和数据源进行交互的面向对象类库集,它存在于.Net Framework中。通常情况下,数据源可以是各种类型的数据库,利用ADO.NET可以访问目前几乎所有的主流数据库,如Oracle、SQL Server、DB2、Access等,但数据源同样也可能输文本文件、Excel或者XML文件,因此,ADO.NET可以访问的数据源是很多的。ADO.NET由两部分组成:.NET数据提供程序和数据集。
.Net数据提供程序
ADO.NET提供了与常用的各种数据源进行交互的一些公共方法,但是对于不同的数据源由于它们各采用的协议是不一样的,所以会采用不同的类库,这些类库称为数据提供程序。主要的数据提供程序
ADO.NET主要负责与数据库服务器建立连接通道,并基于此连接通道实现从数据库中检索数据,并将内存中的数据回送到数据库以提交更新或将在内存中拼写好的SQL语句提交到数据库服务器并执行以实现某种数据操作等等。
数据集
数据集可以被看作是一个存储在内存中的离线式的数据库,它很像我们最终存储数据的物理数据库,它将很多物理数据库的机制搬到了内存中。
2. 使用ADO.NET连接Oracle
使用ADO.NET数据访问技术连接Oracle数据库和连接Sql Server数据库的步骤基本相同:
1. 使用Connection对象建立数据库连接。
2. 使用Command对象执行数据库操作。
3. 采用连线或者断线的方式进行数据的存取。
4. 使用Connection对象的Close方法关闭数据库连接。
连接Sql Server数据库和Oracle数据库所使用的数据提供程序是不一样的,连接Sql Server数据库使用的是SqlServer.NET,包括SqlConnection、SqlCommand等数据访问类。而连接Oracle数据库则使用的是Oracle.NET,包括OracleConnection、OracleCommand等数据访问类,包含在System.Data.OracleClient命名空间下 。
在Oracle数据库中在System用户下,创建UserInfo表,并插入一定数据,使用ADO.NET数据访问技术将UserInfo表中的数据检索出来,并显示在ASP.NET页面中。
1. 使用OracleConnection对象建立与Oracle之间的连接。
//连接字符串 string connectionString = "Data Source = MYORCL;UserID = System;Password = accp;Unicode = True"; //创建Oracle连接对象 OracleConnection con = new OracleConnection(connectionString); //打开连接 con.open();
2.创建命令行对象,准备执行检索数据库操作
//建立Sql查询语句 string sql = "select * from UserInfo"; //创建Oracle命令行对象 OracleCommand cmd = new OracleCommand(sql,con); //执行命令行对象 OracleDataReader ord = cmd.ExcuteReader(CommandBehavior.CloseConnection);
3.创建实体类,并遍历结果集,将数据存放在集合中存储
//实体类 public class UserInfo { int userID; public int UserID { get{return userID;} set{userID = value;} } string userName; public string UserName { get{return userName;} set{userName = value;} } string userAge; public string UserAge { get{return userAge;} set{userAge = value;} } } //遍历结果集 IList<UserInfo> users = new List<UserInfo>(); while(ord.read()) { UserInfo user = new UserInfo(); user.UserID = Convert.ToString(ord["UserID"]); user.UserName = Convert.ToString(ord["UserName "]); user.UserAge = Convert.ToString(ord["UserAge "]); users.Add(user); }
4.将集合中的数据绑定到GridView控件上显示出来
GridView.DataSource = users;
GridView.DataBind();