C#语言和数据库技术基础TP15_第1页
C#语言和数据库技术基础TP15_第2页
C#语言和数据库技术基础TP15_第3页
C#语言和数据库技术基础TP15_第4页
C#语言和数据库技术基础TP15_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用ADO.NET查询和操作数据第十五章回顾与作业点评Connection对象的作用是什么?ExecuteScalar()方法返回的结果是什么?提问2/34预习检查使用DataReader的什么方法可以逐行读取数据?ExecuteNonQuery()方法的功能是什么?提问3/34本章任务实现MySchoolBase系统查看学生信息按学号查询学生姓名按姓名查询学生信息新增年级记录修改学生出生日期删除学生记录4/34本章目标掌握C#中的StringBuilder类的常用方法会使用DataReader对象检索数据会使用Command对象操作数据5/34字符串的修改说出下面代码的输出结果stringstrText="Hello";strText+="World";Console.WriteLine(strText);你知道程序是如何执行的吗?HelloWorldstrTextHelloHelloWorldstrText每次修改strText,不是追加而是都要创建一个新的字符串对象代码阅读垃圾6/34StringBuilder类能否做到重复修改时,不创建新的对象?使用StringBuilder类StringBuilder类:用来定义可变字符串更多方法可以通过MSDN自学了解问题方法说明StringBuilderAppend(stringvalue

)在结尾追加StringBuilderInsert(intindex,stringvalue

)在指定位置插入指定字符串StringBuilderRemove(int

startIndex,

intlength

)移除指定字符串7/34StringBuilder类的使用2-1使用StringBuilder类修改上述代码

StringBuildersbTest=newStringBuilder();sbTest.Append("Hello");sbTest.Append("World");Console.WriteLine(sbTest.ToString());Console.ReadLine();转成String类型实例化一个StringBuilder对象以下SQL语句哪个可读性更高,更易修改?SELECTSubjectNo,SubjectName,ClassHour,GradeFROMSubjectSELECT[SubjectNo],[SubjectName],[ClassHour],[Grade]FROM[Subject]8/34提问StringBuilder类的使用2-2使用StringBuilder类修改MySchoolBase中的查询学生数量功能关键代码回顾StringBuildersbSql=newStringBuilder();sbSql.AppendLine("SELECT");sbSql.AppendLine("COUNT(*)");sbSql.AppendLine("FROM");sbSql.AppendLine("[Student]");//…SqlCommandcomm=newSqlCommand(sbSql.ToString(),conn);//…易于修改和查看示例演示示例1:使用StringBuilder修改MySchoolBase9/34为什么使用DataReader怎样读取数据库的数据?应用程序毛毛,北大青鸟,优秀毛毛姓名:学校:北大青鸟成绩:优秀DataReader数据库10/34问题DataReader对象DataReader对象从数据源中检索只读、只进的数据流每次读取一行数据命名空间对应的DataReader

对象System.Data.SqlClient

SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc

OdbcDataReaderSystem.Data.OracleClientOracleDataReader11/34使用DataReader查询数据如何查看学生学号、姓名列表?要查询多行多列的数据,需要使用Command对象的ExecuteReader(

)方法分析问题演示示例2:用DataReader读取数据1使用Connection连接数据库使用Command发送命令使用DataReader处理查询结果12/34示例2代码分析关键代码回顾SqlDataReaderreader=comm.ExecuteReader();//获得DataReader对象//…//循环读取数据行并显示while(reader.Read()){sb1.AppendFormat("{0}\t{1}",reader["StudentNo"],reader["StudentName"]);Console.WriteLine(sb1);sb1.Length=0;}//…reader.Close();//关闭DataReader13/34改进示例2演示示例3:用DataReader读取数据2经验改进示例2,分别使用不同的方法实现读取数据和显示数据问题实际开发中,操作数据库的代码和处理数据的代码一般是分开的,这样可以使程序更易于复用和维护读取数据DBOperation类中的GetStudentList(

)方法,返回一个DataReader对象显示数据SchoolManager类中的ShowStudentList(

)方法分析14/34示例3代码分析关键代码回顾comm.ExecuteReader(CommandBehavior.CloseConnection);//执行查询SqlDataReaderreader=_dbOper.GetStudentList();//调用获得学生信息的方法//…//循环读取DataReaderwhile(reader.Read()){sb1.AppendFormat("{0}\t{1}",reader["StudentNo"],reader["StudentName"]);Console.WriteLine(sb1);sb1.Length=0;}//…reader.Close();//关闭DataReader15/34DataReader的主要成员DataReader的主要成员属性说明HasRows

是否返回了结果方法说明

Read前进到下一行记录Close关闭DataReader

对象16/34DataReader使用步骤小结使用DataReader检索数据的步骤1.创建Command对象2.调用ExecuteReader()创建DataReader对象3.使用DataReader的Read()方法逐行读取数据4.读取某列的数据,(type)dataReader[]5.关闭DataReader对象获取某列的值:方法一:指定列的索引,从0开始方法二:指定列名注意17/34DataReader

使用后必须关闭学员操作——按学号查询学生姓名2-1需求说明当管理员输入操作键“3”时,根据输入的学号查询相应的学生姓名并输出讲解需求说明18/34指导学员操作——按学号查询学生姓名2-2实现思路1.在数据库操作类中创建查询学生姓名的方法

2.使用StringBuilder拼写带条件的SQL语句3.使用DataReader对象的Read()方法读取学生姓名并返回4.在业务类中调用查询方法并输出返回的学生姓名难点指导执行Command对象的ExecuteReader()方法得到Reader对象学号为主键,只能读取至多一行信息,固使用if语句指导完成时间:25分钟19/34共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解20/34学员操作——按姓名查询学生信息2-1训练要点DataReader对象的使用SQL语句的拼写需求说明当管理员输入操作键“4”时,根据姓名模糊查询除密码外的全部学生信息并显示,年级根据实际编号显示年级名称讲解需求说明21/34指导学员操作——按姓名查询学生信息2-2实现思路1.在数据库操作类中创建查询学生信息的方法

2.使用StringBuilder拼写内连接的Sql语句3.使用DataReader对象的Read()方法循环读取学生信息4.在业务类中调用查询学生信息的方法并输出难点指导comm.ExecuteReader(CommandBehavior.CloseConnection);SELECTA.[StudentNo],A.[StudentName],A.[Sex],B.[GradeName],A.[Phone],A.[Adress],A.[BornDate],A.[Email]FROM[Student]asA,[Grade]asBWHERE[StudentName]like‘%学生姓名%'ANDA.[GradeId]=B.[GradeId]指导完成时间:25分钟22/34操作数据如何对数据库的数据进行增删改?应用程序毛毛,北大青鸟,良好毛毛姓名:学校:北大青鸟成绩:良好ExecuteNonQuery()数据库23/34问题操作数据示例使用SqlCommand对象的ExecuteNonQuery()方法向数据库增加记录如何实现新增年级信息?分析问题演示示例4:向数据库中增加记录使用Connection连接数据库使用Command发送命令获得并处理执行结果24/34示例4代码分析关键代码回顾StringBuildersb=newStringBuilder();sb.AppendLine("INSERTINTO");sb.AppendLine("[Grade]");sb.AppendLine("VALUES");sb.AppendLine("('"+gradeName+"')");//创建command对象SqlCommandcommand=newSqlCommand(sb.ToString(),conn);//执行命令command.ExecuteNonQuery();//……返回受影响记录的行数单引号的位置25/34ExecuteNonQuery()方法小结该方法执行指定的SQL语句返回受影响的行数使用ExecuteNonQuery()的步骤创建Connection对象定义SQL语句创建Command对象执行ExecuteNonQuery()方法根据返回的结果进行处理26/34学员操作——新增年级记录需求说明在示例3的基础上,完善新增年级记录的功能要求查询管理员输入的年级名称在Grade表中是否已经存在如果指定年级名称的记录在Grade表中已存在,显示提示信息,并退出该操作添加到年级表中,并根据添加结果,输出相关的提示信息练习完成时间:20分钟27/34学员操作——修改学生出生日期2-1训练要点类型转换Command对象的ExecuteNonQuery()方法需求说明当管理员输入操作键“6”时,输入要修改的学生学号和修改后的出生日的提示,根据学号更新Student表中的出生日出生日输入格式错误、更新成功以及异常发生给出相应提示信息确认数据库中的数据被成功更新讲解需求说明28/34指导学员操作——修改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论