- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
本章常见错误
本讲大纲:
1、用DataReader读取数据时出现错误
支持网站:
3、以DataReader做为返回类型的陷阱
2、混淆.NET和SQLServer中的“空值”
用DataReader读取数据时出现错误
在ADO.NET中,可以通过Command对象的ExecuteReader()方法从数据源中检索数据来创建DataReader读取器。例如,使用DataReader读取器读取数据库中的用户信息表,代码如下:
SqlConnectioncon=
newSqlConnection(server=Mrwxk\\mrwxk;userid=sa;pwd=;database=db_CSharp);
try
{
con.Open(); //打开数据库连接
SqlCommandcmd=newSqlCommand(select*fromUserInfowhere1=0,con);//创建命令对象
SqlDataReaderreader=cmd.ExecuteReader();//创建数据阅读器
reader.Read();//打开数据阅读器
stringUserName=reader[UserName].ToString();
}
finally
{
if(con.State!=ConnectionState.Closed) //确保连接被关闭
{con.Close();}//关闭数据库连接
}
但在执行上述代码时,却弹出如图11.22所示的错误窗口,错误窗口中显示:“在没有任何数据时进行无效的读取尝试。”
从上面的错误信息中初步确认,是数据源中没有数据引起的问题,这主要是因为在执行Read()方法时,由于数据源中没有数据,所以第一次调用Read()方法时就返回false,但在代码中没有判断Read()方法的返回值就直接读取第一行记录,所以才会出现前面的错误。
该问题的解决方法是在使用DataReader每次读取记录之前判断Read()方法的返回值,只有返回值为true时才能读取记录。代码如下:
if(reader.Read())
{
stringUserName=reader[UserName].ToString();
}
混淆.NET和SQLServer中的“空值”
SQLServer中的“空值”用NULL表示,等同于“没有输入的值”,例如,在SQLServer数据库中某个表上插入一个新行,新行中没有输入值的字段都是“空值”。在SQL命令中,判断一个值是不是空值,要用“ISNULL”而不是“=NULL”。处理空值有个ISNULL函数,它使用指定的值替换NULL。
ADO.NET数据提供程序从数据库中提取数据时,在字段没有有效值时会自动分配DBNull值,即SQLServer中的NULL等同于.NET中的DBNull。
在.NET中,DBNull类型是一个单独的类,表示未初始化的变量或不存在的数据库列。而面向对象编程语言中的null表示不存在某个对象的引用。所以SQLServer数据库中的null和C#语言中的null是完全不相同的。
以一个学生数据为例,age年龄数据的值是null时,并不代表这个学生没有年龄(每个人一定都年龄),而是尚未设定或还不知道而已,声明一个可以允许空值的年龄变量,示例代码如下:
int?age=null;
以DataReader做为返回类型的陷阱(1)
ADO.NET提供了两种数据访问方式:一种是断开式访问(使用DataAdapter和DataSet实现数据访问),另一种是流式访问(使用Command和DataReader实现数据访问)。
DataReader是一个轻量级的数据对象,它提供的是一种在连接数据库的状态下、只能向前的记录访问方式。如果只需要将数据读出显示,使用它是最佳选择,它的读取速度比DataSet快,占用的资源比DataSet少。例如,使用DataReader读取数据,并返回DataReader类型,代码如下:
publicstaticIDataReaderGetDataReader(stringsql)
{
SqlConnectioncon=
newqlConnection(server=Mrwxk\\mrwxk;userid=sa;pwd=;database=db_CSharp);
try
{
con.Open();//打开数据连接
SqlCommandcmd=new
您可能关注的文档
- unit 1 whats the matter课时2 section b学生-帮课堂八级下册英语同步人教版.pdf
- 新人教版八级物理上册光反射学案.pdf
- 牛津英语课件老版workbook.pdf
- 七级下学期中数学试卷版.pdf
- 下半判断系统-逻辑随堂笔记.pdf
- 电子课件本章常见错误.pdf
- 介绍文案二课时unit 42 section 3a4c.pdf
- 文本文案二课时unit 42 section 3a4c.pptx
- 人事行政模板款a 28.pdf
- 各科学习高数微观济题.pdf
- 五位一体教案教学教案设计.docx
- 思修与法基-教学教案分享.pptx
- 大学军事之《中国国防》题库分享.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.pdf
- 思修与法基 教学全案分享.docx
- 大学军事之《军事思想》题库分享.docx
- 《经济思想史》全套课件-国家级精品课程教案课件讲义分享.pdf
- 厦门大学国际金融全套资料(国家级精品课程)--全套课件.pdf
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章-中国特色社会主义理论体系的形成发展.docx
- 2023版毛泽东思想和中国特色社会主义理论体系概论第五章中国特色社会主义理论体系的形成发展分享.pdf
最近下载
- 2024聊城高级财经职业学校工作人员招聘考试试题及答案.docx VIP
- 1.1正数和负数 说课稿 2024—2025学年人教版数学七年级上册.docx
- 一种浓香型白酒发酵容器.pdf VIP
- 湖北大学《模拟电子技术基础》2018-2019年第一学期期末试卷B卷.pdf
- 事业单位考试职业能力倾向测验试卷及解答参考.docx VIP
- 详解SR220C电气说明书_20070822.doc
- 大班数学活动数玉米.pptx
- 与法治》六年级下册第8课《科技发展造福人类》精品教案.pdf
- 《网络管理与维护》课程标准 .pdf VIP
- 第一单元《刨削及其他工具》课件北京出版社七年级劳动技术《木工设计与制作》.pptx VIP
文档评论(0)