ADO.NET对象的详解

时间:2023-03-08 16:42:10
1. Connection 类
和数据库交互,必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。 
属性:
CommandTimeout
这义了使用 Execute 方法运行一条 SQL 命令的最长时限,能够中断并产生错误。默认值为30秒,设定为0表示没有限制
ConnectionString
设定连接数据源的信息,包括 FlieName、Password、Userld、DataSource、Provider 等参数。
ConnectionTimeout
设置在终止尝试和产生错误前建立数据库连接期间所等待的时间,该属性设置或返回指示等待连接打开的时间的长整型值(单位为秒),默认值为15。如果将该属性设置为0,ADO 将无限等待直到连接打开。
DefaultDatabase
定义连接默认数据库
Mode
建立连接之前,设定连接的读写方式,决定是否可更改目前数据。0 一 不设定(默认)、1 一 只读、2 一 只写、3 一 读写。
State
读取当前链接对象的状态,取0表示关闭,1表示打开。
方法:
Open
打开一个数据库连接
ChangeDatabase
改变当前连接的数据库。需要一个有效的数据库名称
Close
关闭数据库连接。使用该方法关闭一个打开的连接
CreateCommand
创建并返回一个与该连接关联的SqlCommand对象
Dispose
释放资源
实例:
 //创建连接数据库的字符串
        string SqlStr = "Server=MRWXK\\MRWXK;User Id=sa;Pwd=;DataBase=db_ASPNET";
        //创建SqlConnection对象
        SqlConnection con = new SqlConnection(SqlStr);
        con.Open();//打开数据库的连接
        if (con.State == System.Data.ConnectionState.Open)
        {
            Response.Write("SQL Server数据库连接开启!<p/>");
            //关闭数据库的连接
            con.Close();
        }
        if(con.State==System.Data.ConnectionState.Closed)
        {
            Response.Write("SQL Server数据库连接关闭!<p/>");
        }
2. Command对象 
成 功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方 法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命 令。
属性:

Connection

指定Command对象所使用的Connection对象。

CommandType

指定Command对象的类型,有3种选择:

1 Text:表示Command对象用于执行SQL语句。

2 StoredProcedure:表示Command对象用于执行存储过程。

3 TableDirect:表示Command对象用于直接处理某个表。

CommandType属性的默认值为Text。

CommandText

根据CommandType属性的取值来决定CommandText属性的取值,分为3种情况

1 如果CommandType属性取值为Text,则CommandText属性指出SQL语句的内容。

2 如果CommandType属性取值为StoredProcedure,则CommandText属性指出存储过程的名称。

3 如果CommandType属性取值为TableDirect,则CommandText属性指出表的名称。

CommandText属性的默认值为SQL语句。

CommandTimeout

指定Command对象用于执行命令的最长延迟时间,以秒为单位,如果在指定时间内仍不能开始执行命令,则返回失败信息。

默认值为30秒。

Parameters

指定一个参数集合。

方法:

ExecuteReader

执行查询操作,返回一个具有多行多列的结果集。

ExecuteScalar

执行查询操作,返回单个值。这个方法通常用来执行那些用到count()或者sum的命令。

ExecuteNonQuery

执行插入、修改或删除操作,返回本次操作受影响的行数。

3. DataReader类
许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。
属性:

Depth

设置阅读器浓度。对于SqlDataReader类,它总是返回0

FieldCount

获取当前行的列数

Item

索引器属性,以原始格式获得一列的值

IsClose

获得一个表明数据阅读器有没有关闭的一个值

RecordsAffected

获取执行SQL语句所更改、添加或删除的行数

方法:

Read

使DataReader对象前进到下一条记录(如果有)

Close

关闭DataReader对象。注意,关闭阅读器对象并不会自动关闭底层连接

Get

用来读取数据集的当前行的某一列的数据数据

NextResult

当读取批处理 SQL 语句的结果时,使数据读取器前进到下一个结果

实例:

//连接字符串 
string strSQL = "SELECT SName,SClass from Student where SNum='" + DropDownList1.SelectedValue + "'";
        SqlCommand oCmd;//连接数据库命令
        SqlDataReader oDR = null;
        oCmd = new SqlCommand();
        StudentDA.GetBDConnection();
        oCmd.Connection = StudentDA.aConnection;
        oCmd.Connection.Open();
        oCmd.CommandText = strSQL;
        oDR = oCmd.ExecuteReader();
        while (oDR.Read())
        {
            txtSName.Text = oDR["SName"].ToString();
            txtClass.Text = oDR["SClass"].ToString();
        }
        StudentDA.CloseSqlDataReader(oDR);
        StudentDA.CloseConnection();
4. DataAdapter类
某些时候开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数 据库调用的次数。DataAdapter通过断开模型来帮助开发人员方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数 据库的时候,DataAdapter填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候 自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的 Command 对象引用。开发人员将为DataSet中的每一个Table都定义DataAadapter,它将为开发人员照顾所有与数据库的连接。所以开发人员将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。
它的主要成员是DataSet和DataTable,其他成员可以简单理解成这两个类的组成类。下面主要介绍DataSet和DataTable。
属性:

DeleteCommand

获取或者设置用于在数据源中删除记录的命令

InsertCommand

获取或设置用于将新纪录插入到数据源中的命令

SelectCommand

获取或者设置用于在数据源中选择记录的命令

UpdateCommand

获取或者设置用于在数据源中更新记录的命令

方法:

Dispose

删除该对象

Fill

用从源数据读取的数据行填充至DataSet对象中

FillSchema

将一个DataTable加入到指定的DataSet中,并配置表的模式

GetFillParameters

返回一个用于SELECT命令的DataParameter对象组成的数组

Update

在DataSet对象中的数据有所改动后更新数据源。

实例:(本例主要是绑定到Gridview上)
 string sqlstr = "select TNum,TName,TSex,TBirth,TProf,TEdu,TRemark,TStatus,TPassword from Teacher";
        SqlConnection sqlcon = new SqlConnection(StudentDA.conStr);
        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds = new DataSet();
        sqlcon.Open();
        myda.Fill(myds, "Teacher");
        GridView1.DataSource = myds;
        GridView1.DataBind();
        StudentDA.CloseConnection();
6. DataSet对象
DataSet 对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。开发人员甚至能够定义 表之间的关系来创建主从关系。DataSet是在特定的场景下使用,帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有DataProviders使用的对象,因此它并不像Data Provider一样需要特别的前缀。
属性:
Tables
数据集中包含的数据表的集合。

Ralations

数据集中包含的数据联系的集合。
DataSetName
用于获取或设置当前数据集的名称
HasErrors 用于判断当前数据集中是否存在错误
方法:
Clear

清除数据集包含的所有表中的数据,但不清除表结构。

Clone

复制DataSet的结构,包括所有的DataTable架构关系和约束。不复制任何数据。

Copy

复制DataSet的结构和数据

AcceptChanges

提自加载此DataSet或上次调用以来对其进行的修改
7. DataTable类
DataTable与数据库中的table很相似,你几乎完全可以按照数据库中的table来理解DataTable,包括行和列等等。反正你就按照table来理解它就对了。最后,简单说一下这些对喜爱对象之间的关系。Connection 对象提供数据来源的连接。Command 对象可让开发人员存取操作数据库的命令,以便传回数据、修改数据、执行预存程序 (Stored Procedure),并且传送参数信息。DataReader则可提供来自数据来源的高效能数据流。最后,DataAdapter会提供 DataSet 对象与数据来源之间的桥接器 (Bridge)。DataAdapter 会使用 Command 对象,在数据来源处执行 SQL 命令,以便将数据载入 DataSet,并且也能将 DataSet 内的数据变更更新到数据库。