SqlDataReader的用法(重点:访问字段的值)
来源:互联网 发布:大数据 智能交通 编辑:程序博客网 时间:2024/05/01 10:26
在基于链接的数据库访问模式下,查询类操作通常是执行select命令,产生的查询结果可以通过SqlDataReader类依次读取。
SqlDataReader类是ADO.NET提供的用于读取SQL Server数据库记录的只读向前数据记录读取器。
开始时,SqlDataReader指向第一条记录之前,不能直接,通过SqlDataReader,Read()方法可以读取下一条记录,重复指令,直到全部记录读取完成
为了方便获取数据记录中的某个字段的值,SqlDataReader类还提供GetXXX()一系列的方法,将指定字段的数据按照特定数据类型读取,如int、string、DataTime等等
**********************************************************************************************************************************************************************************
SqlDataReader类常用成员
一、属性
1、Depth:表示当前行的嵌套属性(我不常用)
2、FieldCount:表示当前行中的列数
3、HasRows:表示当前行SqlDataReader是否包含一行或多行(常用,用于登录检测用户是否存在)
4、IsClose:表示SqlDataReader实例是否已经关闭了
5、VisibleFieldCount:表示当前SqlDataReader中未隐藏的字段的数目。
二、方法
Read():使得当前SqlDataReader前进道下一条记录,即向前读取。(常用)
我们经常这样做: While(dr.Reader()) //遍历所有记录
{ //do something with the current record }
注意,如果每一条记录的操作可能花费比较长的时间,那么意味着阅读器将长时间打开,那么数据库连接也将维持长时间的打开状态。
此时使用非连接的DataSet或许更好一些。
NextResult() :使得数据读取器前进道下一个结果,注意,不是一行记录
IsDBNull():确定指定列中是否包含不存在或缺少的值。
Close():关闭当前SqlDataReader实例。
【GetXXXXX()的用法】索引从0开始→//转载yanjun_xiaoli博客:
访问字段的值 有2种方法。
第一种是Item属性,此属性返回字段索引或者字段名字对应的字段的值。
第二种是Get方法,此方法返回有字段索引指定的字段的值。看例子。
(1) Item属性 每个DataReader类都定义一个Item属性。比如现在我们有一个DataReader实例dr,对应的sql语句是select Fid,Fname from friend,则我们可以使用下面的方法取得返回的值:
【实例取值】
string strSql = "Data Source=VQJREZV7DVSK2QA;Initial Catalog=gridviewAPP;User ID=sa;Password=admin@123456";
SqlConnection connew = new SqlConnection(strSql);
SqlCommand cmd = connew.CreateCommand();
connew.Open();
cmd.CommandText = "select userName,sex,address from userInfo";
SqlDataReader dr = cmd.ExecuteReader();
System.Console.WriteLine("查询的结果如下:");
while (dr.Read())
{
//string username,string sex,string address
Label1.Text= dr.GetString(0);
Label2.Text= dr.GetString(1);
Label3.Text= dr.GetString(2);
}
connew.Close();
******************************************************************************************************************
无奈而华丽丽的分割线【DataReader的创建方法】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【1】遍历DataReader结果集
//SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//SqlDataReader dr = cmd.ExecuteReader();
//while (dr.Read())
//{
// Response.Write(dr.GetInt32(0).ToString()+ ", " + dr.GetString(1) + "<br>");
//}
//dr.Close();
【2】使用列名索引器
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr["ProductId"].ToString()+ ", " + dr["Name"].ToString() + "<br>");
}
dr.Close();
myConnection.Close();
【3】使用序数索引器
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Response.Write(dr[0].ToString()+ ", " + dr[1].ToString()+ "<br>");
}
【4】操作多个数据集
//SqlDataReader dr = cmd.ExecuteReader();
dr.NextResult(); //使数据读取器前进到下一个结果集
do
{
while (dr.Read())
{
Response.Write(dr.GetInt32(0).ToString() + ", " + dr.GetString(1) + "<br>");
}
}
while(dr.NextResult());
dr.Close();
******************************************************************************************************************
无奈而华丽丽的分割线【DataReader注意事项】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
使用DataReader的一些注意事项:
(1)使用带参数的Command前,必须关闭DataReader;
(2)完成读数据之后一定要关闭DataReader;
(3)不能在层之间远程访问DataReader,它只为已经连接好的数据访问而设计;
(4)一个单一连接每次只能打开一个DataReader;
(5)在默认情况下,DataReader每次执行Read()时候都要将整行加载到内存中
(6)注意,当访问数据时候,使用类型访问器,如GetString等等,这使得你不用将GetValue返回的Object强制转换成特定类型》【切记】
类型访问器有:GetChar(int i);GetDataTime(int i);GetInt16(int i);GetString(int i)之类的。
dr.GetDataTypeName(int i) //获取源数据类型的名称
dr.GetFieldType((int i) //获取对象的数据类型的Type
dr.GetName(int i) //获取指定列的名称
dr.GetOrdinal(int i) //在给定列名称的情况下获取列序号
- SqlDataReader的用法(重点:访问字段的值)
- 如何取出sqldatareader的字段值
- SqlDataReader 的用法
- SqlDataReader读取空值字段,会抛异常的问题
- SqlConnection,SqlCommand,SqldataReader的用法总结
- SqlConnection,SqlCommand,SqldataReader的用法总结:
- SqlConnection,SqlCommand,SqldataReader的用法总结:
- [转载]SqlConnection,SqlCommand,SqldataReader的用法总结:
- SqlConnection,SqlCommand,SqldataReader的用法总结:
- (转)SqlConnection,SqlCommand,SqldataReader的用法总结:
- 获取sqlDataReader对象Read()方法读取流的字段值的四种方法
- c#数据库访问返回值类型为SqlDataReader时使用using时注意的问题
- sqldatareader:使用SqlDataReader注意的几点
- File重点方法的用法
- SqlDataReader的问题
- 忘不了的恨~~SqlDataReader
- SqlDataReader的使用方式
- SqlDataReader引发的异常
- 根据两点经纬度计算距离
- ubuntu查看占用某端口的程序
- 【最长子序列 动态规划】
- 把android 4.2平板的状态栏从底部挪到顶部 NavigationBar
- 函数指针
- SqlDataReader的用法(重点:访问字段的值)
- Android读写文件
- Jboss 进入不了admin console页面的解决办法( Solution: Jboss stuck in loading admin console)
- SITTC教你云计算基础入门(一)
- Win7+Ubuntu双系统,恢复win7
- oracle的rowid和rdba庖丁解牛(不错,desc 包)
- oracle管道(pipelined function)函数用法
- android EditText限制只能输入2位小数的解决方法
- 编写代码?先熟悉一下编程语言界限吧!