数据读取器是一个用于从数据源读取数据的对象。只能对数据源进行读操作,不能进行更新操作。数据作为数据流从数据源检索。尽管数据读取器仅限于读取操作,但由于其只读和只转发,所以它是非常有效和优化的。 .Net Framework中有两种类型的提供程序,它们是SQLDataReader和OleDbDataReader。数据读取器通过减少系统开销来提高应用程序性能,因为它在给定时间点将唯一的行存储在内存中。本文将详细介绍 C# 中的数据读取器以及适当的示例。
语法:
sql数据读取器在命名空间System.Data.SqlClient中可用,对应的程序集是System.Data.SqlClient.dll。 SQL 数据读取器初始化如下。
SqlDataReadersqlReader = sqlCmd.ExecuteReader();
execute reader用于将SQL语句或过程传递给sqlconnection对象,并将相应的结果存储在SqlDataReader的sqlreader对象中。在从任何数据读取器读取之前,它应该始终打开并且应该指向第一条记录。使用数据读取器的read()方法读取并前进到下一行。
oledb 数据读取器的行为方式也相同。它在名称空间 System.Data.OleDb 中可用,相应的程序集是 System.Data.OleDb.dll。 oledbDataReader 对象用于连接到 OLEDB 数据源并从中获取数据。与 SQLDataReader 一样,oledbdata reader 也应该在执行读取操作之前打开。 oledb 数据读取器初始化如下。
OleDbDataReaderoledbReader = oledbCmd.ExecuteReader();
executereader 用于执行 SQL 语句或过程。
数据读取器对象有一个 read 方法,可用于访问结果集中的行。每个列值都可以使用它们的名称或使用它们在结果集中出现的列顺序来访问。 为了提高效率,使用一组预定义的类型转换方法来访问此类值。建议在处理大量数据时使用数据读取器,因为数据不存储在高速缓存中。始终建议在使用数据读取器对象后将其关闭。如果命令有一些返回值或输出参数,则只有在数据读取器关闭后才可用。使用数据读取器时要记住的另一件重要事情是,当数据读取器使用连接时,无法在该连接上执行另一个数据读取器或任何其他操作。此外,要记住的一件重要事情是只能向前访问数据集。我们只能迭代到下一条记录,而不能迭代到上一条记录。
如果数据读取器返回多个结果集,可以使用数据读取器的NextResult方法来访问它们。在实现过程中,应该注意并注意所有结果集都会被迭代,并且结果集中的每一列都是可访问的。
以下是 DataReader C# 的示例:
通常,从数据读取器返回的结果集中读取数据是使用 while 循环迭代每一行。 read 方法返回值为 bool 类型,如果存在下一行则返回 true,对于最后一条记录则返回 false。 while 循环将被执行,直到条件变为 false。
语法:
while(rdr.Read()) { // operation to be performed // Access columns // Data manipulation }
就像关闭 SQL 连接一样,关闭数据读取器始终是最佳实践。所有 while 部分都可以包含在 try 块中,并且可以在 finally 块中关闭数据读取器连接。
语法:
try { // operation to be performed // Access columns // Data manipulation } Catch { //Handle exception here } finally { //close the data reader connection if (reader != null) { reader.Close(); } // close thesql connection }
代码:
using System; using System.Windows.Forms; using System.Data.SqlClient; namespace test { public partial class test1 : Form { public test1() { InitializeComponent(); } Public static void main() { string constr = null; SqlConnectionscon ; SqlCommandscmd ; string sstat = null; constr = "Data Source=testserver;Initial Catalog=testdb;User ID=test;Password=test"; sstat = "Select * from test"; scon = new SqlConnection(constr); try { scon.Open(); scmd = new SqlCommand(sstat, scon); SqlDataReadersstatReader = scmd.ExecuteReader(); while (sstatReader.Read()) { Console.WriteLine("Name:" sstatReader.GetValue(0) + "age:" sstatReader.GetValue(1) ); } sstatReader.Close(); scmd.Dispose(); scon.Close(); } catch (Exception ex) { } } } }
输出:
代码:
using System; using System.Windows.Forms; using System.Data.OleDb; namespace test { public partial class test : Form { public test() { InitializeComponent(); } Public static void main() { string constr = null; OleDbConnectionocon ; OleDbCommandocmd ; string sql = null; constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"; sql = "select * from emp"; ocon = new OleDbConnection(constr); try { ocon.Open(); ocmd = new OleDbCommand(sql, ocon); OleDbDataReaderordr = ocmd.ExecuteReader(); while (ordr.Read ()) { Console.WriteLine("EmpName:" ordr.GetValue(0) + "Empage:" ordr.GetValue(1) + "Esalary" ordr.GetValue(2) ); } ordr.Close(); ocmd.Dispose(); ocon.Close(); } catch (Exception ex) { Console.WriteLine("Connection Failed"); } } } }
输出:
因此,本文详细介绍了 C# 中的数据读取器。它还展示了如何从数据流中仅以正向方式读取数据读取器。文章还详细解释了两种类型的数据读取器,即.esql数据读取器和oledb数据读取器。它展示了两个数据读取器的工作原理以及适当的示例。本文还介绍了如何使用 NextResult 方法处理多个结果集以及如何使用 for 循环迭代每个数据行。要了解更多详细信息,建议编写示例程序并进行练习。
这是 DataReader C# 指南。在这里,我们讨论 C# 中的 DataReader 简介及其示例以及代码实现和输出。您还可以浏览我们其他推荐的文章以了解更多信息 –
以上是数据读取器 C#的详细内容。更多信息请关注PHP中文网其他相关文章!