ADO.NET的五个主要对象

您所在的位置:网站首页 net的组成 ADO.NET的五个主要对象

ADO.NET的五个主要对象

2024-06-15 01:32| 来源: 网络整理| 查看: 265

文章目录 Connection:Command:DataAdapter:DataSet:DataReader:

ADO.NET中的五个主要对象:Connection、Command、DataAdapter DataSet、DataReader详细介绍与应用,感兴趣的朋友可以参考下

对象名简述Connection:数据库交互必不可少的步骤。用于建立到数据源的连接Command:对数据库发出指令操作,例如对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是通过Connection连结到数据源的。DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使用的功能。DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。ADO.NET 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader 或 DataAdapter ,然后再使用取得的DataReader 或DataAdapter 对象操作数据结果。 Connection:

重要属性:

ConnectionString 属性,连接字符串,可以通过ConnectionStringBuilder去生成,也可以通过配置文件来配置信息: State 属性,表示 SqlConnection 的状态。为ConnectionState的枚举值,常用包括: Closed:连接已关闭。Open:连接处于打开状态。 SqlConnection connection; public SqlHelper() { connection = new SqlConnection(ConnectString()); } //获取连接字符串 private string ConnectionString(){ return ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; } //打开连接 private SqlConnection GetConnection(){ if (connection.State == ConnectionState.Closed) { connection.Open(); } return connection; } //关闭连接 public void CloseConnection() { if (connection.State == ConnectionState.Open) { connection.Close(); } }

重要方法:

Open() 方法,使用由 ConnectionString 指定的属性设置打开一个数据库连接。Close() 方法,关闭与数据库之间的连接。 此方法是关闭任何打开连接的首选方法。Dispose() 方法,执行与释放或重置非托管资源关联的应用程序定义的任务。 Command:

重要属性:

Connection ,获取或设置 SqlCommand 的此实例使用的 SqlConnection。CommandText,获取或设置要在数据源中执行的 Transact-SQL 语句、表名或存储过程。Parameters,获取 SqlParameterCollection,用于传递参数对象。Transaction,获取或设置要在其中执行 SqlTransaction 的 SqlCommand。

重要方法:

ExecuteNonQuery(),对连接执行 增删改的Transact-SQL 语句并返回受影响的行数。ExecuteReader(),将 CommandText 发送到 Connection,并生成 SqlDataReader对象返回。ExecuteScalar(),执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。Dispose(),执行与释放或重置非托管资源关联的应用程序定义的任务。

重要事件:

Disposed,在通过调用 Dispose() 方法释放组件时发生。 /// /// 执行带参数的增删改SQL语句或存储过程 /// /// 增删改SQL语句或存储过程名字 /// 命令类型 /// 参数列表 /// public int ExecuteNonQuery(string cmdText, CommandType ct, SqlParameter[] paras) { int res; using (cmd = new SqlCommand(cmdText, GetConnection())) { cmd.CommandType = ct; cmd.Parameters.AddRange(paras); res = cmd.ExecuteNonQuery(); } CloseConnection(); return res; } DataAdapter:

重要属性:

SelectCommand,获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。InsertCommand,获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。UpdateCommand,获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录。DeleteCommand,获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。

示例代码:

public static SqlDataAdapter CreateCustomerAdapter( SqlConnection connection) { SqlDataAdapter adapter = new SqlDataAdapter(); // 创建 SelectCommand. SqlCommand command = new SqlCommand("SELECT * FROM Customers " + "WHERE Country = @Country AND City = @City", connection); // 添加参数到 SelectCommand. command.Parameters.Add("@Country", SqlDbType.NVarChar, 15); command.Parameters.Add("@City", SqlDbType.NVarChar, 15); adapter.SelectCommand = command; // 创建 InsertCommand. command = new SqlCommand( "INSERT INTO Customers (CustomerID, CompanyName) " + "VALUES (@CustomerID, @CompanyName)", connection); // 添加参数到 InsertCommand. command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID"); command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName"); adapter.InsertCommand = command; // 创建 UpdateCommand. command = new SqlCommand( "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " + "WHERE CustomerID = @oldCustomerID", connection); // 添加参数到 UpdateCommand. command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID"); command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName"); SqlParameter parameter = command.Parameters.Add( "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID"); parameter.SourceVersion = DataRowVersion.Original; adapter.UpdateCommand = command; // 创建 DeleteCommand. command = new SqlCommand( "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); // 添加参数到 DeleteCommand. parameter = command.Parameters.Add( "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); parameter.SourceVersion = DataRowVersion.Original; adapter.DeleteCommand = command; return adapter; } /// /// 执行带参数的查询SQL语句或存储过程 /// /// 查询SQL语句或存储过程名字 /// 命令类型 /// 参数集合 /// 返回DataSet结果集 public DataSet ExecuteQuery(string cmdText, CommandType ct, SqlParameter[] paras) { cmd = new SqlCommand(cmdText, GetConnection()); cmd.CommandType = ct; cmd.Parameters.AddRange(paras); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); CloseConnection(); return ds; }

重要方法:

Fill方法,填充数据集。通常会向DataSet中填充。Update方法,更新数据源。 DataSet: DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。也就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的。创建和刷新 DataSet 并依次更新原始数据的步骤: 通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。 DataSet所有数据都加载在内存上执行的,可以提高数据访问速度,提高硬盘数据的安全性,极大的改善了程序运行的速度和稳定性。每一个DataSet对象是由若干个 DataTable对象组成。DataSet使用方法: 把数据库中的数据通过DataAdapter对象填充DataSet。通过DataAdapter对象操作DataSet实现更新数据库。 DataSet对象的三大特性 独立性。DataSet独立于各种数据源。离线(断开)和连接。DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图。 DataReader:

若要创建 SqlDataReader ,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不是直接使用构造函数。

在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader提供服务,除了关闭它之外,不能在SqlConnection上执行其他操作。直到调用SqlDataReader的Close方法之前都是这样。例如,只有在调用Close之后才能检索输出参数

重要属性:

Connection,获取与 SqlConnection 关联的 SqlDataReader。FieldCount,获取当前行中的列数。HasRows,获取一个值,该值指示 SqlDataReader 是否包含一行还是多行。IsClosed,检索一个布尔值,该值指示是否已关闭指定的 SqlDataReader 实例。Item[Int32],在给定列序号的情况下,获取指定列的以本机格式表示的值。Item[String],在给定列名称的情况下,获取指定列的以本机格式表示的值。

重要方法:

Close(),关闭 SqlDataReader 对象。Dispose(),释放 DbDataReader 类的当前实例所使用的所有资源。Read(),让 SqlDataReader 前进到下一条记录。 /// /// 执行带参数的查询SQL语句或存储过程 /// /// 查询SQL语句或存储过程名字 /// 命令类型 /// 参数集合 /// 返回DataReader结果集 public SqlDataReader ExecuteReader(string cmdText, CommandType ct, SqlParameter[] paras) { cmd = new SqlCommand(cmdText, GetConnection()); cmd.CommandType = ct; cmd.Parameters.AddRange(paras); try { reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return reader; } catch { connection.Close(); throw; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3