2023年6月21日发(作者:)
的五个主要对象⽂章⽬录中的五个主要对象:Connection、Command、DataAdapter DataSet、DataReader详细介绍与应⽤,感兴趣的朋友可以参考下对象名Connection:简述数据库交互必不可少的步骤。⽤于建⽴到数据源的连接对数据库发出指令操作,例如对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是通过Connection连结到数据源的。主要是在数据源以及DataSet 之间执⾏数据传输的⼯作,它可以透过Command 对象下达命令后,并将取得的数据放⼊DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使⽤的功能。这个对象可以视为⼀个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚⾄可以将整个数据库显⽰出来。DataSet 的DataSet:能⼒不只是可以储存多个Table ⽽已,还可以透过DataAdapter对象取得⼀些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是 中重量级的对象,这个对象架构在DataAdapter对象上,本⾝不具备和数据源沟通的能⼒;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。当我们只需要循序的读取数据⽽不需要其它操作时,可以使⽤DataReader 对象。DataReader对象只是⼀次⼀笔向下循序的读取数据源中的数据,⽽且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取⼀笔,⽽且只能只DataReader:读,所以使⽤起来不但节省资源⽽且效率很好。使⽤DataReader 对象除了效率较好之外,因为不⽤把数据全部传回,故可以降低⽹络的负载。 使⽤Connection 对象来连接数据库,使⽤Command 或DataAdapter对象来执⾏SQL语句,并将执⾏的结果返回给DataReader 或 DataAdapter ,然后再使⽤取得的DataReader 或DataAdapter 对象操作数据结果。Command:DataAdapter:Connection:重要属性:ConnectionString 属性,连接字符串,可以通过ConnectionStringBuilder去⽣成,也可以通过配置⽂件来配置信息:State 属性,表⽰ SqlConnection 的状态。为ConnectionState的枚举值,常⽤包括:Closed:连接已关闭。Open:连接处于打开状态。SqlConnection connection;public SqlHelper(){ connection = new SqlConnection(ConnectString());}//获取连接字符串private string ConnectionString(){ return tionStrings["ConStr"].ConnectionString;}//打开连接private SqlConnection GetConnection(){ if ( == ) { (); } return connection;}//关闭连接public void CloseConnection(){ if ( == ) { (); }}重要⽅法: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())) { dType = ct; ge(paras); res = eNonQuery(); } 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. ("@Country", ar, 15); ("@City", ar, 15); Command = command; //
创建 InsertCommand. command = new SqlCommand( "INSERT INTO Customers (CustomerID, CompanyName) " + "VALUES (@CustomerID, @CompanyName)", connection); //
添加参数到 InsertCommand. ("@CustomerID", , 5, "CustomerID"); ("@CompanyName", ar, 40, "CompanyName"); Command = command; //
创建 UpdateCommand. command = new SqlCommand( "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " + "WHERE CustomerID = @oldCustomerID", connection); //
添加参数到 UpdateCommand. ("@CustomerID", , 5, "CustomerID"); ("@CompanyName", ar, 40, "CompanyName"); SqlParameter parameter = ( "@oldCustomerID", , 5, "CustomerID"); Version = al; Command = command; //
创建 DeleteCommand. command = new SqlCommand( "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); //
添加参数到 DeleteCommand. parameter = ( "@CustomerID", , 5, "CustomerID"); Version = al; Command = command; return adapter;}/// ///
执⾏带参数的查询SQL语句或存储过程/// /// 查询SQL语句或存储过程名字/// 命令类型/// 参数集合/// 返回DataSet结果集public DataSet ExecuteQuery(string cmdText, CommandType ct, SqlParameter[] paras){ cmd = new SqlCommand(cmdText, GetConnection()); dType = ct; ge(paras); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); (ds); CloseConnection(); return ds;}重要⽅法:Fill⽅法,填充数据集。通常会向DataSet中填充。Update⽅法,更新数据源。DataSet:1. DataSet是的中⼼概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独⽴数据集合。也就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可⽤的。2. 创建和刷新 DataSet 并依次更新原始数据的步骤:1. 通过 DataAdapter 使⽤数据源中的数据⽣成和填充 DataSet 中的每个 DataTable。2. 通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。3. 调⽤ DataAdapter 的 Update ⽅法,并将第⼆个 DataSet 作为参数传递。3. DataSet所有数据都加载在内存上执⾏的,可以提⾼数据访问速度,提⾼硬盘数据的安全性,极⼤的改善了程序运⾏的速度和稳定性。4. 每⼀个DataSet对象是由若⼲个 DataTable对象组成。5. DataSet使⽤⽅法:1. 把数据库中的数据通过DataAdapter对象填充DataSet。2. 通过DataAdapter对象操作DataSet实现更新数据库。6. DataSet对象的三⼤特性1. 独⽴性。DataSet独⽴于各种数据源。2. 离线(断开)和连接。3. 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()); dType = ct; ge(paras); try { reader = eReader(onnection); (); return reader; } catch { (); throw; }}
2023年6月21日发(作者:)
的五个主要对象⽂章⽬录中的五个主要对象:Connection、Command、DataAdapter DataSet、DataReader详细介绍与应⽤,感兴趣的朋友可以参考下对象名Connection:简述数据库交互必不可少的步骤。⽤于建⽴到数据源的连接对数据库发出指令操作,例如对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在Connection 对象上,也就是Command 对象是通过Connection连结到数据源的。主要是在数据源以及DataSet 之间执⾏数据传输的⼯作,它可以透过Command 对象下达命令后,并将取得的数据放⼊DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使⽤的功能。这个对象可以视为⼀个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚⾄可以将整个数据库显⽰出来。DataSet 的DataSet:能⼒不只是可以储存多个Table ⽽已,还可以透过DataAdapter对象取得⼀些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是 中重量级的对象,这个对象架构在DataAdapter对象上,本⾝不具备和数据源沟通的能⼒;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。当我们只需要循序的读取数据⽽不需要其它操作时,可以使⽤DataReader 对象。DataReader对象只是⼀次⼀笔向下循序的读取数据源中的数据,⽽且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取⼀笔,⽽且只能只DataReader:读,所以使⽤起来不但节省资源⽽且效率很好。使⽤DataReader 对象除了效率较好之外,因为不⽤把数据全部传回,故可以降低⽹络的负载。 使⽤Connection 对象来连接数据库,使⽤Command 或DataAdapter对象来执⾏SQL语句,并将执⾏的结果返回给DataReader 或 DataAdapter ,然后再使⽤取得的DataReader 或DataAdapter 对象操作数据结果。Command:DataAdapter:Connection:重要属性:ConnectionString 属性,连接字符串,可以通过ConnectionStringBuilder去⽣成,也可以通过配置⽂件来配置信息:State 属性,表⽰ SqlConnection 的状态。为ConnectionState的枚举值,常⽤包括:Closed:连接已关闭。Open:连接处于打开状态。SqlConnection connection;public SqlHelper(){ connection = new SqlConnection(ConnectString());}//获取连接字符串private string ConnectionString(){ return tionStrings["ConStr"].ConnectionString;}//打开连接private SqlConnection GetConnection(){ if ( == ) { (); } return connection;}//关闭连接public void CloseConnection(){ if ( == ) { (); }}重要⽅法: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())) { dType = ct; ge(paras); res = eNonQuery(); } 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. ("@Country", ar, 15); ("@City", ar, 15); Command = command; //
创建 InsertCommand. command = new SqlCommand( "INSERT INTO Customers (CustomerID, CompanyName) " + "VALUES (@CustomerID, @CompanyName)", connection); //
添加参数到 InsertCommand. ("@CustomerID", , 5, "CustomerID"); ("@CompanyName", ar, 40, "CompanyName"); Command = command; //
创建 UpdateCommand. command = new SqlCommand( "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " + "WHERE CustomerID = @oldCustomerID", connection); //
添加参数到 UpdateCommand. ("@CustomerID", , 5, "CustomerID"); ("@CompanyName", ar, 40, "CompanyName"); SqlParameter parameter = ( "@oldCustomerID", , 5, "CustomerID"); Version = al; Command = command; //
创建 DeleteCommand. command = new SqlCommand( "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection); //
添加参数到 DeleteCommand. parameter = ( "@CustomerID", , 5, "CustomerID"); Version = al; Command = command; return adapter;}/// ///
执⾏带参数的查询SQL语句或存储过程/// /// 查询SQL语句或存储过程名字/// 命令类型/// 参数集合/// 返回DataSet结果集public DataSet ExecuteQuery(string cmdText, CommandType ct, SqlParameter[] paras){ cmd = new SqlCommand(cmdText, GetConnection()); dType = ct; ge(paras); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); (ds); CloseConnection(); return ds;}重要⽅法:Fill⽅法,填充数据集。通常会向DataSet中填充。Update⽅法,更新数据源。DataSet:1. DataSet是的中⼼概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独⽴数据集合。也就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可⽤的。2. 创建和刷新 DataSet 并依次更新原始数据的步骤:1. 通过 DataAdapter 使⽤数据源中的数据⽣成和填充 DataSet 中的每个 DataTable。2. 通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。3. 调⽤ DataAdapter 的 Update ⽅法,并将第⼆个 DataSet 作为参数传递。3. DataSet所有数据都加载在内存上执⾏的,可以提⾼数据访问速度,提⾼硬盘数据的安全性,极⼤的改善了程序运⾏的速度和稳定性。4. 每⼀个DataSet对象是由若⼲个 DataTable对象组成。5. DataSet使⽤⽅法:1. 把数据库中的数据通过DataAdapter对象填充DataSet。2. 通过DataAdapter对象操作DataSet实现更新数据库。6. DataSet对象的三⼤特性1. 独⽴性。DataSet独⽴于各种数据源。2. 离线(断开)和连接。3. 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()); dType = ct; ge(paras); try { reader = eReader(onnection); (); return reader; } catch { (); throw; }}
发布评论