首页 > 代码库 > ADO.net笔记
ADO.net笔记
1.DbConnection
Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。
Connection对象有两个重要属性:
ConnectionString:表示用于打开 SQL Server 数据库的字符串;
State:表示 Connection 的状态,有Closed和Open两种状态。
Connection对象有两个重要方法:
Open()方法:指示打开数据库;
Close()方法:指示关闭数据库。
连接字符串:("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
2.DbCommand
Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。
_DbCommand = _DbConnection.CreateCommand();
_DbCommand.CommandText = CommandString; //存储过程名称或sql语句字符串
_DbCommand.CommandType = _CommandType; //类型为CommandType.StoredProcedure 或 CommandType.Text
DbCommand参数
_DbHelper.ClearParameter();
_DbHelper.AddInParameter("@Type", DbType.Int32, 7);
//第一种添加查询参数的例子
command.Parameters.AddWithValue("@sex", true);
//第二种添加查询参数的例子
SqlParameter parameter = new SqlParameter("@age", SqlDbType.Int);//注意UserInfo表里age字段是int类型的
parameter.Value = http://www.mamicode.com/30;
command.Parameters.Add(parameter);//添加参数
Command主要有三个方法:
ExecuteNonQuery () :执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。
ExecuteReader ():执行一个查询的SQL语句,返回一个DataReader对象。
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。
3.DbDataAdapter
DataAdapter对象也称之为数据适配器对象,DataAdapter对象利用数据库连接对象(Connection)连接的数据源,使用数据库命令对象(Command)规定的操作从数据源中检索出数据送往数据集对象(DataSet),或者将数据集中经过编辑后的数据送回数据源。数据适配器将数据填入数据集时调用方法Fill()。
执行上述SELECT语句时,与数据库的连接必须有效,但不需要用语句将连接对象打开。如果调用Fill()方法之前与数据库的连接已经关闭,则将自动打开它以检索数据,执行完毕后再自动将其关闭。如果调用Fill()方法之前连接对象已经打开,则检索后继续保持打开状态。
DataTable _DataTable = new DataTable();
DbDataAdapter _DbDataAdapter = _DbProviderFactory.CreateDataAdapter();
_DbDataAdapter.SelectCommand = _DbCommand; //不需要手动打开/关闭数据库。
_DbDataAdapter.Fill(_DataTable);
4.DataReader
DataReader对象是一个读取行的只读流的方式,绑定数据时比使用数据集方式性能要高,因为它是只读的,所以如果要对数据库中的数据进行修改就需要借助其它方法将所作的更改保存到数据库。
DataReader对象不能通过直接实例化,必须借助与相关的Command对象来创建实例,例如用SqlCommand的实例的ExecuteReader()方法可以创建SqlDataReader实例。
因为DataReader对象读取数据时需要与数据库保持连接,所以在使用完DataReader对象读取完数据之后应该立即调用它的Close()方法关闭,并且还应该关闭与之相关的Connection对象。
_DbCommand.Connection.Open();
_DbDataReader = _DbCommand.ExecuteReader(CommandBehavior.CloseConnection); //由_DbCommand创建_DbDataReader ,在关闭DataReader对象的同时自动关闭掉与之相关的Connection对象。
DataReader对象读取数据有三种方式:
a.按查询的时候列的索引用指定的方式来读取列值,无需做相应转换,如GetByte(int i)就是读取第i列的值并且转换成byte类型的值。第这种方法的优点是指定列后直接将该列的直接读取出来了,无需再转换,缺点是一旦指定的列不能按照指定的方式转换时就会抛出异常,比如数据库里字段的类型是string类型或者该字段的值为空时按照GetByte(i)这种方式读取会抛出异常。
b.按照列索引的方式读取,在读取的时候并不进行值转换,如:reader[5]就是读取第5列的值(这里reader是一个Reader对象的实例),这样得到的值是一个object类型的值,这也很好理解,因为在数据库可能存储各种类型的值,而object是所有类的基类,所以这个方法不会抛出异常。如果要得到它的正确类型,还需要根据数据库里的字段进行进行相应转换。
c.按照列名的方式去读,并且在读的时候也不进行相应转换,得到的是object类型的值。
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。为提高性能,数据库连接对象应该尽可能晚打开,尽可能早关闭。
_DbCommand.Connection.Open();
_return = _DbCommand.ExecuteScalar();
_DbCommand.Connection.Close();
5.DataTable
DataTable 是 ADO.NET 库中的核心对象,就像普通的数据库中的表一样,它也有行和列。它主要包括DataRow和DataColumn,分别代表行和列。
DataRow用法:
DataRow dr = dt.Rows[i];
DataColumn用法:
string dc = dr.Columns["字段名"].ToString();
string dc = dr.Column[i].ToString();//i表示对应的列索引
在操作数据库的时候,为了提高性能,都遵循一个原则:数据库连接对象应该尽可能晚打开,尽可能早关闭。
ADO.net笔记