C#练习DataReader】的更多相关文章

SqlParameter[] sp = { new SqlParameter("@nGridID",SqlDbType.BigInt), new SqlParameter("@strDocID",SqlDbType.VarChar,16), new SqlParameter("@chType",SqlDbType.Char,1), }; sp[0].Value = nGridID; sp[1].Value = strDocID; sp[2].Va…
Datareader对象不能关使用new关键字创建.但可以使用ExecuteReader()方法创建. DataReader是一行一行的读取记录的.当记录中有数据时Read()返回TRUE,当到记录集底部时返回FALSE. 重要属性: FieldCount:获取当前行中的列数. HasRows:获取一个值,该值指示 SqlDataReader 是否包含一行或多行. NextResul:当执行的是sql存储程序,或是可返回多个结果集的批处理sql语句时,该方法将当前行指针移到下一个结果集 (该操作…
使用codefirst查询当然是必不可少的,但有时不小心可能很简单的查询也会导致异常. 下面用codefirst做个示例简单演示下异常发生的场景: var attendlist = db.Database.SqlQuery<AttendCountViewModel>("select STUDENTID,SUM(isnull(REALHOUR,0)) As REALHOUR from ATTEND_LIST where ATTENDDATE='" + geDate + &qu…
public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定义DataTable DataTable datatable = new DataTable(); try {    ///动态添加表的数据列 for (int i = 0; i < dataReader.FieldCount; i++) { DataColumn myDataColumn = new DataColumn();…
本文转载自:http://www.cnblogs.com/xinaixia/p/4920630.html 1. 获取数据的方式[1]DataReader 为在线操作数据, DataReader会一直占用SqlConnection连接,在其获得数据过程中其它操作不可以再使用SqlConnection连接对象. 代码如下: while(datareader.read()) { .............. } dataview.datasource=datareader; dataview.data…
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private s…
通过ADO.net 查询到数据库的数据后,通过DataReader转为对象Info public class BaseInfo { /// <summary> /// 填充实体 /// </summary> /// <param name="dr"></param> public virtual void Fill(DataRow dr) { PropertyInfo[] ps = this.GetType().GetProperties…
DataReader 是游标只读数据, 如果是大数据导出,用Datatable 将耗费巨大内存资源.因为Datatable 其实就是内存中的一个数据表 代码如下 /// <summary> /// SqlDataReader 生成csv文件 /// </summary> /// <param name="fileNameCsv">文件名(包含文件路径)</param> /// <param name="dr"&g…
一.DataReader含义 DataReader相比于DataSet,DataReader是一个抽象类,所以不能用DataReader DR = new DataReader(),来构造函数创建对象,如果要创建一个DataReader对象,必须通过command对象的ExecuteReader方法. DataReader对象访问数据的方式,只能顺序读取数据,而且不能写入数据(这点DataSet占据绝对的优势),所谓的顺序读取数据是将数据表中的行从头至尾一次读出.DataReader被创建时,纪…
DataReader:使用时始终占用SqlConnection,在线操作数据库:每次只在内存中加载一条数据,所以占用的内存是很小的:是只进的. 只读的. DataSet:则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即释放数据库连接SqlConnection(非连接模式) DataSet:将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行 回传更新操作(动态操作读入到内存的数据);…
公司一个数据抓取的程序,数据量极大,读取数据的用IDataReader的Read方法来进行数据处理,在测试的时候我想跑一部分数据后跳出循环,即break; 然后关闭datareader,但是在执行datareader.close()方法的时候出现了“超时异常”的错误, 查看了一下MSDN对Close方法的说明的备注 如下: 当使用 SqlDataReader 将关联的 SqlConnection 用于任何其他用途时,必须显式调用 Close 方法. Close 方法填写输出参数的值.返回值和 R…
Fixing the "There is already an open DataReader associated with this Command which must be closed first." exception in Entity Framework 下面代码可能会报如标题所示错误 var contacts = from c in db.Contact select c; foreach (Contact c in contacts) { if (c.Phones.…
DataReader对象与数据获取 DataReader对象以“基于连接”的方式来访问数据库. 也就是说,在访问数据库.执行SQL操作时,DataReader要求一直连在数据库上. 这将会给数据库的连接负载带来一定的压力,但DataReader对象的工作方式将在很大程度上减轻这种压力.(感觉这不是前后矛盾了?) DataReader对象的常用属性 DataReader对象提供了用顺序的.只读的方式读取用Command对象获得的数据结果集. 由于DataReader只执行读操作,并且每次只在内存缓…
遍历数据阅读器中的记录 当ExecuteReader方法返回DataReader对象时,当前光标的位置在第一条记录的前面. 必须调用阅读器的Read方法把光标移动到第一条记录,然后,第一条记录将变成当前记录. 如果数据阅读器所包含的记录不止一条,Read方法就返回一个Boolean值true. 想要移到下一条记录,需要再次调用Read方法.重复上述过程,直到最后一条记录,那时Read方法将返回false. 经常使用while循环来遍历记录: while(reader.Read()) { //读取…
数据阅读器 当执行返回结果集的命令时,需要一个方法从结果集中提取数据. 处理结果集的方法有两个: 第一,使用数据阅读器(DataReader): 第二,同时使用数据适配器(Data Adapter)和ADO.NET数据集(DataSet). 本节将学习数据阅读器的有关知识. DataReader类 在ADO.NET中由每个数据提供程序实现自己的DataReader. 数据读取器(DataReader)是从一个数据源中选择某些数据的最简单的方法,但也是功能较弱的一个方法. DataReader类没…
ADO.NET主要包括Connection , command , DataReader, DataSet, DataAdapter5个对象, 通过这5个对象可以对数据库进行查询, 添加, 修改及删除的处理 a)       Connection 对象主要提供与数据库的连接功能 b)       Command对象用于返回数据, 修改数据, 运行存储过程和发送查询命令参数信息的命令. c)       DataReader 对象通过Command对象提供从数据库查询信息的功能. 他是一种只读的,…
使用特性 原理图 PS:Read()使指针下移,同时销毁上一条.所以SqlDataReader是只进的. GetValue()是找当前行中的列 SqlDataReader()特性. 1)只进的  上面原理图描述了. 2)只读的   SqlDataReader只能获取,不能修改. 3)使用SqlDataReader必须保证,Connection的状态是打开的. 因为结果集存储在数据库服务器中,不打开连接是找不到. 读数据的方式 1.reader.GetValue(0) 没有列名的重载. 2.rea…
不管是啥xxDataReader,都是继承DataReader实现的,所以是有共性的,因此标题就以DataReader为题了. 情况一:DataReader 默认链接不关闭 static void Main(string[] args) { SqlConnection con = new SqlConnection("server=.;database=MySpace;uid=sa;pwd=123456"); con.Open(); SqlCommand com = new SqlCo…
sqlServer   DataReader与DataSet的区别 从以下这几个方面比较: 1.与数据库连接: DataReader:面向连接,只读,只进,只能向前读,读完数据就断开连接: DataSet:非面向连接,把数据加载到sql缓存池中,然后断开连接: 2.处理数据速度: DataReader:速度快: DataSet:速度慢: 3.更新数据库: DataReader:更新后,没有办法还原到原来的数据库: DataSet:更新后,可以还原回原来的数据库: 4.支持分页排序: DataRe…
一.使用DataReader读取为对象List /// <summary> /// 获得数据列表List<>,DataReader 使用参数的 /// </summary> /// <param name="strWhere">条件</param> /// <param name="ht">HashTable,保存参数名及参数对应的值</param> /// <returns&…
C#调用SSIS包需要引用两个DLL .(具体位置在C盘搜索,MSDN和百度提供的路径都不太正确) Microsoft.SQLServer.ManagedDTS.dll Microsoft.SqlServer.Dts.DtsClient.dll    这是MSDN上的例子 https://msdn.microsoft.com/zh-cn/library/ms136025%28v=sql.120%29.aspx MSDN上的例子只有读取一个DataReader的做法,并且该方法不能加事件. 下面是…
相关知识: 在很多情况下,可能把数据库的访问封装到一个函数中,通过该函数返回一个DataReader对象给调用者.例如定义函数:SqlDataReader returnDR(),然后再Main函数中调用它. 但这里导致了一个问题:在哪里关闭数据库连接? 在returnDR()函数中关闭Connection,那么在Main函数中将无法获取每行数据: 在Main函数中关闭Connection,但是Main函数无法访问returnDR()函数内部定义的SqlConnection对象:(除非把SqlCo…
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.SqlClient; 使用DataReader访问数据库的步骤 创建SqlConnection对象,指定连接字符串 创建SqlCommand对象,指定与之相关的连接对象,以及数据库操作命令文本(CommandText) 打开连接 调用SqlCommand对象的ExecuteReader()方法,返回S…
取出的DataReader如果在读取过程中报没有列的错误可以用这个方法. //调用该方法判断datareader中是否有指定列 public static bool readerExists(IDataReader dr, string columnName) { dr.GetSchemaTable().DefaultView.RowFilter = "ColumnName= '" + columnName + "'"; ); } public static CBi…
异常提示:“System.InvalidOperationException”类型的异常在 System.Data.dll 中发生,但未在用户代码中进行处理  其他信息: 已有打开的与此 Command 相关联 异常解析:象依赖的Connection不能再用来执行其他Command命令.所以代码段会报“已有打开的与此命令相关联的 DataReader,必须首先将它关闭.” 的错误提示.解决方法如下:1.两个对象不要共用一个Connection对象.2.不要在while代码段内执行reader.C…
摘自:http://www.cnblogs.com/zhjjNo1/archive/2009/08/26/1554420.html 第一种解释 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.由于DataReader的特殊性和高性能,所以Dat…
ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader.并且这两个对象都可以将检索的关系数据存储在内存中.在软件开发过程中经常用到这两个控件,由于这两个控件在使用和功能方面的相似,很多程序员错误地认为DataSet和DataReader是可以相互替代的.这种想法是错误的,在这我们分析一下DataSet控件和DataReader控件的区别.■与数据库连接DatSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开于数据库的连接.Dataread…
点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预览一下 请看代码 /// <summary> /// 类说明:Assistant /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http://www.sufeine…
昨天听同学说,要把DataReader对象转成实体对象,要写一个通用的方法.想了下用反射应该可以做到.项目中一般都是用第三方组件来做数据访问层,如,Nhibernate.ef等.于是自己想写个简单例子玩玩. 其实,实现起来和简单.一个泛型方法搞定.代码如下: public List<T> ToList<T>(string _sql) where T :class ,new() { using (var conn = new SqlConnection(connStr)) { usi…
使用MVC4 EF Linq获取foreach列表循环的时候遇到了如下的问题:报错提示 There is already an open DataReader associated with this Connection which must be closed first 解决方法如下红色所示: @foreach (var item in Model.ToList()) {   @Html.ActionLink(@item.user.nickname + "(微信)", "…