DataReader的使用方法

关于DataReader

可以使用 ADO.NET DataReader 从数据库中检索只读、只进的数据流。因为每次在内存中始终只有一行,所以使用 DataReader 可提高应用程序的性能并减少系统开销。

当创建 Command 对象的实例后,可调用 Command.ExecuteReader 从数据源中检索行,从而创建一个 DataReader,如以下示例所示。

1SqlDataReader myReader = myCommand.ExecuteReader();

使用 DataReader 对象的 Read 方法可从查询结果中获取行。通过向 DataReader 传递列的名称或序号引用,可以访问返回行的每一列。不过,为了实现最佳性能,DataReader 提供了一系列方法,它们将使您能够访问其本机数据类型(GetDateTimeGetDoubleGetGuidGetInt32 等)形式的列值。有关类型化访问器方法的列表,请参阅 OleDbDataReader 类和 SqlDataReader 类 。如果在基础数据类型未知时使用类型化访问器方法,将减少在检索列值时所需的类型转换量。

以下代码示例循环访问一个 DataReader 对象,并从每个行中返回两个列。

1while (myReader.Read())
2  Console.WriteLine("/t{0}/t{1}", myReader.GetInt32(0), myReader.GetString(1));
3myReader.Close();

DataReader 提供未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在检索大量数据时,DataReader 是一种适合的选择。

关闭 DataReader

每次使用完 DataReader 对象后都应调用 Close 方法。

如果 Command 包含输出参数或返回值,那么在 DataReader 关闭之前,将无法访问这些输出参数或返回值。

请注意,当 DataReader 打开时,该 DataReader 将以独占方式使用 Connection。在初始 DataReader 关闭之前,将无法对Connection 执行任何命令(包括创建另一个 DataReader)。

多个结果集

如果返回的是多个结果集,DataReader 会提供 NextResult 方法来按顺序循环访问这些结果集,如以下代码示例所示。

01SqlCommand myCMD = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories;" +
02                                  "SELECT EmployeeID, LastName FROM Employees", nwindConn);
03nwindConn.Open();
04 
05SqlDataReader myReader = myCMD.ExecuteReader();
06 
07do
08{
09  Console.WriteLine("/t{0}/t{1}", myReader.GetName(0), myReader.GetName(1));
10 
11  while (myReader.Read())
12    Console.WriteLine("/t{0}/t{1}", myReader.GetInt32(0), myReader.GetString(1));
13 
14} while (myReader.NextResult());
15 
16myReader.Close();
17nwindConn.Close();

从 DataReader 中获取架构信息

 DataReader 打开时,可以使用 GetSchemaTable 方法检索有关当前结果集的架构信息。GetSchemaTable 将返回一个填充了行和列的 DataTable 对象,这些行和列包含当前结果集的架构信息。对于结果集的每一列,DataTable 都将包含一行。架构表行的每一列都映射到在结果集中返回的列的属性,其中 ColumnName 是属性的名称,而列的值为属性的值。以下代码示例为 DataReader 写出架构信息。

1DataTable schemaTable = myReader.GetSchemaTable();
2 
3foreach (DataRow myRow in schemaTable.Rows)
4{
5  foreach (DataColumn myCol in schemaTable.Columns)
6    Console.WriteLine(myCol.ColumnName + " = " + myRow[myCol]);
7  Console.WriteLine();
8}

 

转自:http://www.cnblogs.com/herbert/archive/2010/09/07/1820345.html

 

参考:http://www.cnblogs.com/xy8.cn/archive/2008/06/21/1227202.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,安装pandas_datareader包可以通过使用pip进行安装。你可以在命令提示符或终端中运行以下命令来安装pandas_datareader包: pip install pandas_datareader 确保你的pip是最新版本,以便能够正确安装该包。一旦安装完成,你就可以在Python脚本中导入该包,并使用其提供的接口来获取金融数据。例如,你可以使用以下代码来获取雅虎财经的股票数据并将其保存为CSV文件: ```python import pandas_datareader.data as web import datetime as dt start = dt.datetime(2021,1,1) # 获取数据的起始时间 end = dt.date.today() # 结束时间为当前时间 stockData = web.DataReader("603927.SS", "yahoo", start, end) # 获取中科软的股票数据,数据源为雅虎 stockData.to_csv('StockData/603927.csv') # 将数据保存为CSV文件 ``` 如果你想获取特定日期范围内的股票数据,可以使用类似的代码。只需将起始时间和结束时间更改为所需的日期范围,并将股票代码替换为你感兴趣的股票代码即可。 希望这对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python学习笔记(二):安装pandas_datareader包](https://blog.csdn.net/weixin_43647192/article/details/97549239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Python】使用pandas_datareader获取股票信息并进行可视化分析](https://blog.csdn.net/weixin_44037272/article/details/118002109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值