版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用ADO.NET查询和操作数据第十五章回顾与作业点评回顾与作业点评Connection对象的作用是什么对象的作用是什么?ExecuteScalar()方法返回的结果是什么?方法返回的结果是什么?提问提问2/34预习检查预习检查使用使用DataReader的什么方法可以逐行读取的什么方法可以逐行读取数据?数据?ExecuteNonQuery() 方法的功能是什么?方法的功能是什么?提问提问3/34本章任务本章任务实现实现MySchoolBase系统系统查看学生信息查看学生信息按学号查询学生姓名按学号查询学生姓名按姓名查询学生信息按姓名查询学生信息新增年级记录新增年级记录修改学生出生日期修改学生
2、出生日期删除学生记录删除学生记录4/34本章目标本章目标掌握掌握C#中的中的StringBuilder类的常用方法类的常用方法会使用会使用DataReader对象检索数据对象检索数据会使用会使用Command对象操作数据对象操作数据5/34字符串的修改字符串的修改 说出下面代码的输出结果说出下面代码的输出结果string strText = Hello;strText += World;Console.WriteLine( strText ); 你知道你知道程序是如何程序是如何执行的吗?执行的吗?HelloWorldstrTextHelloHelloWorldstrText 每次修改每次修改s
3、trText,不是追加而是都要创建一个,不是追加而是都要创建一个 新新的字符串对象的字符串对象代码阅读代码阅读垃圾垃圾6/34StringBuilder类类 能否能否做到重复修改时,不做到重复修改时,不创建新的对象?创建新的对象?使用使用StringBuilder类类StringBuilder类:类: 用来定义可变字符串用来定义可变字符串更多方法可以通过更多方法可以通过MSDN自学了解自学了解问题问题方法方法说明说明StringBuilder Append(string value )在结尾追加在结尾追加StringBuilder Insert(int index, string value
4、)在指定位置插入指定字符串在指定位置插入指定字符串StringBuilder Remove(int startIndex, int length )移除指定字符串移除指定字符串7/34StringBuilder类类的使用的使用2-1使用使用StringBuilder类修改上述代码类修改上述代码 StringBuilder sbTest = new StringBuilder(); sbTest.Append(Hello); sbTest.Append(World); Console.WriteLine(sbTest .ToString (); Console.ReadLine();转成转成St
5、ring类型类型实例化一个实例化一个StringBuilder对象对象以下以下SQL语句语句哪个可读性更高,更易修改?哪个可读性更高,更易修改?SELECT SubjectNo,SubjectName,ClassHour,Grade FROM SubjectSELECT SubjectNo , SubjectName , ClassHour , Grade FROM Subject 8/34提问提问StringBuilder类类的使用的使用2-2 使用使用StringBuilder类修改类修改MySchoolBase中的查询学生数量功能中的查询学生数量功能 关键代码关键代码回顾回顾String
6、Builder sbSql = new StringBuilder();sbSql.AppendLine( SELECT );sbSql.AppendLine( COUNT(*) );sbSql.AppendLine( FROM );sbSql.AppendLine( Student );/SqlCommand comm = new SqlCommand(sbSql.ToString () , conn);/易于修改和查看易于修改和查看示例示例演示演示示例示例1:使用使用StringBuilder修改修改MySchoolBase9/34为什么使用为什么使用 DataReader怎样读取数据库的
7、数据?怎样读取数据库的数据?应用程序应用程序 毛毛,北大青鸟,优秀毛毛,北大青鸟,优秀 毛毛毛毛姓名:姓名:学校:学校:北大青鸟北大青鸟成绩:成绩:优秀优秀10/34问题问题DataReader 对象对象DataReader 对象对象从数据源中检索只读、只进的数据流从数据源中检索只读、只进的数据流每次每次读取一行读取一行数据数据命名空间命名空间对应的对应的 DataReader 对象对象System.Data.SqlClient SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc OdbcDataReaderSystem.
8、Data.OracleClientOracleDataReader11/34使用使用 DataReader 查询数据查询数据如何查看学生学号、姓名列表?如何查看学生学号、姓名列表?要查询多行多列的数据,需要使用要查询多行多列的数据,需要使用Command对象的对象的ExecuteReader( )方法方法分析分析问题问题演示演示示例示例2:用:用DataReader读取数据读取数据1使用使用Connection连连接数据库接数据库使用使用Command发发送命令送命令使用使用DataReader处处理查询结果理查询结果12/34示例示例2代码分析代码分析关键代码关键代码回顾回顾SqlDataR
9、eader reader = comm.ExecuteReader();/获得获得DataReader对象对象/循环读取数据行并显示循环读取数据行并显示 while (reader.Read() sb1.AppendFormat(0t1, readerStudentNo, readerStudentName); Console.WriteLine(sb1); sb1.Length = 0;/reader.Close(); /关闭关闭DataReader13/34改进示例改进示例2演示演示示例示例3:用:用DataReader读取数据读取数据2经验经验改进示例改进示例2,分别使用不同的方法实现读
10、取数,分别使用不同的方法实现读取数据和显示数据据和显示数据问题问题 实际开发中,操作数据库的代码和处理数据的代实际开发中,操作数据库的代码和处理数据的代码一般是分开的,这样可以使程序更易于复用和码一般是分开的,这样可以使程序更易于复用和维护维护读取数据读取数据DBOperation类中的类中的GetStudentList( ) 方法,返方法,返回一个回一个DataReader对象对象显示数据显示数据SchoolManager类中的类中的ShowStudentList( )方法方法分析分析14/34示例示例3代码代码分析分析关键代码关键代码回顾回顾comm.ExecuteReader(Comma
11、ndBehavior.CloseConnection);/执行查询执行查询SqlDataReader reader = _dbOper.GetStudentList();/调用获得调用获得学生信息的学生信息的方法方法/循环读取循环读取DataReader while (reader.Read() sb1.AppendFormat(0t1, readerStudentNo, readerStudentName); Console.WriteLine(sb1); sb1.Length = 0;/reader.Close(); /关闭关闭DataReader15/34DataReader 的主要成员
12、的主要成员DataReader 的主要的主要成员成员属性属性说明说明HasRows 是否返回了结果是否返回了结果方法方法说明说明 Read前进到下一行记录前进到下一行记录Close关闭关闭 DataReader 对象对象16/34DataReader 使用步骤小结使用步骤小结使用使用 DataReader 检索数据的检索数据的步骤步骤1. 创建创建 Command 对象对象2. 调用调用 ExecuteReader() 创建创建 DataReader 对象对象3. 使用使用 DataReader 的的 Read() 方法逐行读取数据方法逐行读取数据4. 读取某列的数据,读取某列的数据,(typ
13、e)dataReader 5. 关闭关闭 DataReader 对象对象获取某列的值:获取某列的值:方法一:指定列的索引,从方法一:指定列的索引,从0开始开始方法二:指定列名方法二:指定列名注意注意17/34DataReader 使用后必须关闭使用后必须关闭学员操作学员操作按学号查询学生姓名按学号查询学生姓名2-1需求说明需求说明当管理员输入操作键当管理员输入操作键“3”时,根据输入的学号查询时,根据输入的学号查询相应的学生姓名并输出相应的学生姓名并输出讲解需求说明讲解需求说明18/34指导指导学员操作学员操作按学号查询学生姓名按学号查询学生姓名2-2实现思路实现思路1. 在在数据库操作类中创
14、建查询学生姓名的方法数据库操作类中创建查询学生姓名的方法 2. 使用使用StringBuilder拼写带条件的拼写带条件的SQL语句语句3. 使用使用DataReader对象的对象的Read()方法读取方法读取学生姓名学生姓名并返并返回回4. 在在业务类中调用查询方法并输出返回的学生姓名业务类中调用查询方法并输出返回的学生姓名难点难点指导指导执行执行Command对象的对象的ExecuteReader()方法得到方法得到Reader对象对象学号为主键,只能读取至多一行信息,固使用学号为主键,只能读取至多一行信息,固使用if语句语句指导指导完成时间:完成时间:25分钟钟19/34共性问题集中讲解
15、共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧20/34学员操作学员操作按姓名查询学生信息按姓名查询学生信息2-1训练训练要点要点DataReader对象的使用对象的使用SQL语句语句的拼写的拼写需求需求说明说明当管理员输入操作键当管理员输入操作键“4”时时,根据,根据姓名模糊姓名模糊查询查询除除密码外的密码外的全部学生信息全部学生信息并显示,年级根据实际并显示,年级根据实际编号显示年级名称编号显示年级名称讲解需求说明讲解需求说明21/34指导指导学员操作学员操作按姓名查询学生信息按姓名查询学生信息2-2实现思路实现思路1. 在在数据库操作类中创建
16、查询学生信息的方法数据库操作类中创建查询学生信息的方法 2. 使用使用StringBuilder拼写内连接的拼写内连接的Sql语句语句3. 使用使用DataReader对象的对象的Read()方法循环读取学生信方法循环读取学生信息息4. 在在业务类中调用查询学生信息的方法并输出业务类中调用查询学生信息的方法并输出难点指导难点指导comm.ExecuteReader( CommandBehavior.CloseConnection);指导指导完成时间:完成时间:25分钟分钟22/34操作数据操作数据如何对数据库的数据进行如何对数据库的数据进行增删改增删改?应用程序应用程序毛毛,北大青鸟,良好毛毛
17、,北大青鸟,良好 毛毛毛毛姓名:姓名:学校:学校:北大青鸟北大青鸟成绩:成绩:良好良好23/34问题问题操作数据示例操作数据示例使用使用SqlCommand对象的对象的ExecuteNonQuery() 方法向数据库增加方法向数据库增加记录记录如何实现新增年级如何实现新增年级信息?信息?分析分析问题问题演示示例演示示例4:向数据库中增加记录:向数据库中增加记录使用使用Connection连接数据库连接数据库使用使用Command发送命令发送命令获得并处理执行获得并处理执行结果结果24/34示例示例 4代码代码分析分析关键代码关键代码回顾回顾StringBuilder sb = new Stri
18、ngBuilder();sb.AppendLine(INSERT INTO);sb.AppendLine( Grade);sb.AppendLine(VALUES);sb.AppendLine( ( + gradeName + );/ 创建创建command对象对象SqlCommand command = new SqlCommand(sb.ToString(), conn);/ 执行命令执行命令command.ExecuteNonQuery(); /返回受影响记录的行数返回受影响记录的行数单引号的位置单引号的位置25/34ExecuteNonQuery()方法小结方法小结该方法该方法执行执行
19、指定的指定的 SQL 语句语句返回返回受影响的行受影响的行数数使用使用 ExecuteNonQuery() 的步骤的步骤1. 创建创建 Connection 对象对象2. 定义定义SQL语句语句3. 创建创建 Command 对象对象4. 执行执行 ExecuteNonQuery() 方法方法5. 根据返回的结果进行处理根据返回的结果进行处理26/34学员操作学员操作新增年级记录新增年级记录需求需求说明说明在示例在示例3的基础上,完善新增年的基础上,完善新增年级记录的功能级记录的功能要求要求查询管理员输入的年级名称在查询管理员输入的年级名称在Grade表中是否已经存在表中是否已经存在如果指定年
20、级名称的记录在如果指定年级名称的记录在Grade表中已存在,显示提示信息,并退表中已存在,显示提示信息,并退出该操作出该操作添加到年级表中,并根据添加结果,添加到年级表中,并根据添加结果,输出相关的提示信息输出相关的提示信息练习练习完成时间:完成时间:20分钟分钟27/34学员操作学员操作修改学生出生日期修改学生出生日期2-1训练训练要点要点类型转换类型转换Command对象的对象的ExecuteNonQuery()方法方法需求需求说明说明当管理员输入操作键当管理员输入操作键“6”时时,输入,输入要修改的学生要修改的学生学号和修改后的出生日的提示,根据学号更新学号和修改后的出生日的提示,根据学
21、号更新Student表中的出生日表中的出生日出生日输入格式错误、更新成功以及异常发生给出生日输入格式错误、更新成功以及异常发生给出相应提示信息出相应提示信息确认数据库中的数据被成功更新确认数据库中的数据被成功更新讲解需求说明讲解需求说明28/34指导指导学员操作学员操作修改学生出生日期修改学生出生日期2-2实现思路实现思路1. 在在数据库操作类中创建更新方法数据库操作类中创建更新方法 2. 使用使用StringBuilder拼写条件更新的拼写条件更新的Sql语句语句3. 使用使用Command对象的对象的ExecuteNonQuery()方法方法根据学号更新出生日根据学号更新出生日4. 在在业务类中调用更新方法,使用异常处理捕获输业务类中调用更新方法,使用异常处理捕获输入错误的出生日入错误的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急预案专家认证(3篇)
- 户外管道安装施工方案(3篇)
- 景区营销庙会方案(3篇)
- 桥头别墅装修施工方案(3篇)
- 水洗灯施工方案范本(3篇)
- 烧结室框架施工方案(3篇)
- 病案应急预案总结(3篇)
- 积分考点精炼综合测评试卷
- 罐底板更换施工方案(3篇)
- 荷花观赏营销方案(3篇)
- 基坑工程监测专项技术方案
- 汉中职业技术学院2025年招聘辅导员试题及答案
- 社区卫生服务站统计信息管理制度
- 少年宫教师培训制度
- 社区规范升国旗制度
- 液氧储罐安全知识培训课件
- 全校教职工工作会议校长讲话:大快人心让200名教师起立鼓掌为自己干为学生干为学校干
- 2025年高中信息技术考试试题及答案
- 中建三局2023年《幕墙工程管理指南》
- 《NBT 31115-2017 风电场工程 110kV~220kV 海上升压变电站设计规范》(2026年)实施指南
- 充电桩智能运维优化项目完成情况总结汇报
评论
0/150
提交评论