前言:
一、ADO.NET 顾名思义是要我们首先连接到数据,其提供了平台互用性和可伸缩的数据访问,ADO.NET的好处就是可以断开数据库连接,其内存中是建立一个模拟的数据库,我们接下来看一下数据库内部和物理数据库之间的关系:
物理数据库 | →→ | 内存数据库 |
属性名 | 属性类型 | 属性说明 |
database | →→ | DataSet |
table | →→ | DataTable |
column | →→ | DataColumn |
row | →→ | DataRow |
view | →→ | DataView |
relation | →→ | DataRelation |
二、接下来我们介绍一下ADO.NET中的常用的接口抽象:
数据库访问接口(System.Data) | IDbConnection | IDbcommand | IDbDataAdapter | IDataReader |
数据库访问抽象类(System.Data.Common) | DbConnection | DbCommand | DbDataAdatper | DataReader |
SQL Server(System.Data.SqlClient) | SqlConnection | SqlCommand | SqlDataAdatper | SqlDataReader |
Access(System.Data.OleDb) | OleConnection | OleCommand | OleDataAdatper | OleDataReader |
MySql(System.Data.MySqlClient) | MySqlConnection | MySqlCommand | MySqlDataAdatper | MySqlDataReader |
Oracle(System.Data.OracleClient) | OracleConnection | OracleCommand | OracleDataAdatper | OracleDataReader |
三、针对SQL Server的数据库对象用法
- Connection对象:数据库连接对象,其功能是负责对数据源的连接,所有Connection对象的基类都是DbConnection类。
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
- Command对象:数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可用来执行存储过程。注意:用于执行存储过程的时候需要将Command对象的CommandType属性设置为CommandType.StoredProcedure,默认情况下CommandType属性为CommandType.text.,表示执行普通的Sql语句。
a) ExectuteNonQuery() :执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。
b)ExecuteReader():执行个查询的SQL语句,返回一个DataReader对象。
c) ExecuteScalar():从数据库检索单个值,主要用于统计操作。
//实例化Connection对象 SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa"); //实例化Command对象 SqlCommand command = new SqlCommand("select count(1) as 男性人数from UserInfo where sex=1", connection); //打开Connection对象 connection.Open(); //执行SQL语句 int count = int.Parse(command.ExecuteScalar().ToString()); //关闭Connection对象 connection.Close(); Response.Write("在UserInfo表里共有" + count + "个男性。");
- DataReader 对象:它是一个读取行的只读流方式,绑定数据时比使用数据集方式性能要高,因为他是只读的,所以如果要对数据库中的数据进行修改就需要借助于其他方法将所作的更改保存到数据库。
a) DataReader 对象不能通过直接实例化,必须借助于相关的Command对象来创建实例,
//实例化Connection对象 SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa"); //实例化Command对象 SqlCommand command = new SqlCommand("select * from UserInfo where sex=1", connection);
114 / 235
//打开Connection对象 connection.Open(); //得到DataReader的实例,注意使用了CommandBehavior这个参数,以便同时关闭Connection SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); //如果当前记录还有下一条记录,则循环不会终止
- DataAdapter对象:数据适配器对象,DataAdapter对象利用数据库连接对象(Connection)连接的数据源,使用数据库命令对象(Command)规定的操作从数据源中检索出数据送往数据集对象(DataSet)或者将数据集中经过编辑后的数据送回数据源。
dataAdapter1.Fill(dataTable);//直接填充表
或者 dataAdapter1.Fill(dataSet11, "Products");//填充dataSet11数据集中的"Products"表
- DataSet对象:数据集对象,DataSet对象用于表示那些存储在内存中的数据,它相当于一个内存中的数据库。它可以包含dataTable对象及DataView对象,其主要用于管理存储在内存中的数据以及对数据的断开操作。