C#使用SQL DataReader访问数据的优点和实例
DataReader
DataReader对象提供了用顺序的,只读的方式读取Command对象获得的数据结果集,正是因为DataReader是以顺序的方式连续的读取数据,所有DataReader会以独占的方式打开数据库的连接
由于DataReader只执行读的操作(只读),并且每次只在内存缓冲区里存储结果集中的一条数据,所有使用DataReader的对象的效率比较高,如果要查询大量数据,同时不需要随机访问和修改数据,DataReader是优先的选择
DataReader对象的常用属性
- FieldCount属性表示记录中有多少字段
- HasRows属性用来表示DataReader是否包含数据
- IsClosed属性表示DataReader是否关闭
DataReader对象常用方法
- Close方法将DataReader对象关闭
- GetDataTypName方法取得指定的字段数据形态(类型)
- GetName方法取得指定的字段数据名称
- GetOrdinal方法取得指定字段名称在记录中的顺序
- GetValue方法取得指定字段的数据
- GetValues方法取得全部字段的数据
- Read方法读取下一条记录
实例:
mytable01表中有Id,姓名(name),年龄(age),性别(gender),部门(department),几个字段,并且有几条语句
usingSystem; usingSystem.Data.SqlClient; namespaceDataReaderDemo { classProgram { staticvoidMain(string[]args) { stringconstr="Server=.;user=name;pwd=mima;database=mysql"; SqlConnectionmyCon=newSqlConnection(constr); try { myCon.Open(); stringsql="select*frommytable01"; SqlCommandmycom=newSqlCommand(sql,myCon); //声明DataReader SqlDataReadermydr; mydr=mycom.ExecuteReader(); if(mydr.HasRows) { Console.WriteLine("mytable01中存在数据"); } else { Console.WriteLine("mytable01中不存在任何数据"); } //----------------方法---------------------- Console.WriteLine("第一列的数据类型"+mydr.GetDataTypeName(0)); Console.WriteLine("获取对应列的名称:(第一列)"+mydr.GetName(0)); stringmystr="age";//直接写会报异常,需要有个转换的过程 Console.WriteLine(mydr.GetOrdinal(mystr)); /*此时将上面的15行的str,换为 *stringsql="select*frommytable01whereid=1"; if(mydr.Read()) { Console.WriteLine("取得指定字段的数据:"+mydr.GetValue(0)); } */ /*将15行的str更改为: *stringsql="select*frommytable01wheregender='男'"; object[]myobj=newobject[mydr.FieldCount]; while(myde.Read()){ mydr.GetValues(myobj); foreach(objectiteminmyobj) { Console.Write(item+"\t"); Console.WriteLine(); } } */ //访问DataReader对象时使用索引要比字段名称快很多 while(mydr.Read()) { Console.WriteLine(mydr[0].ToString()+","); Console.WriteLine(mydr[1].ToString()+","); Console.WriteLine(mydr["gender"].ToString()); } //----------------属性---------------------- Console.WriteLine("表中有几个字段:"+mydr.FieldCount); Console.WriteLine("是否关闭:"+mydr.IsClosed); mydr.Close(); Console.WriteLine("是否关闭:"+mydr.IsClosed); } catch(Exceptionex) { Console.WriteLine(ex.Message.ToString()); } finally { myCon.Close(); } Console.Read(); } } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接