第七章用ADO.NET查询和操作数据库回顾Connection对象的作用是什么?什么是异常,用什么结构处理异常?ExecuteScalar()方法返回什么?预习检查DataReader对象的用途是什么?ExecuteNonQuery()方法的功能是什么?ExecuteReader()方法的功能是什么?本章任务MySchool系统的学员用户信息的增删改查实现学员信息的模糊查询实现添加学员用户功能实现修改学员用户状态功能实现删除学员用户功能本章目标会使用DataReader对象检索数据会使用Command对象操作数据掌握ListView控件的使用掌握ContextMenuStrip控件的使用为什么使用DataReader应用程序毛毛,北大青鸟,优秀毛毛姓名:学校:北大青鸟成绩:优秀怎样读取数据库的数据?使用DataReader对象数据库DataReader对象每次读取一行数据命名空间对应的DataReader对象System.Data.SqlClientSqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.OdbcOdbcDataReaderSystem.Data.OracleClientOracleDataReader使用DataReader查询数据添加年级组合框中的年级名称处理窗体Load事件使用DataReader读取年级名称演示示例1:使用DataReader读取数据示例1代码分析关键代码回顾:示例1源代码//执行查询SqlDataReaderdataReader=command.ExecuteReader();stringgradeName=;//年级名称//循环读出所有的年级名,并添加到年级列表框中while(dataReader.Read()){gradeName=(string)dataReader[0];cboGrade.Items.Add(gradeName);}dataReader.Close();循环读取数据行添加到组合框中DataReader的主要成员属性说明HasRows是否返回了结果方法说明Read前进到下一行记录Close关闭DataReader对象DataReader的主要成员:DataReader使用步骤小结使用DataReader检索数据的步骤:1、创建Command对象2、调用ExecuteReader()创建DataReader对象3、使用DataReader的Read()方法逐行读取数据4、读取某列的数据,(type)dataReader[]5、关闭DataReader对象获取某列的值:方法一:指定列的索引,从0开始方法二:指定列名注意:DataReader使用后必须关闭小结编写控制台程序,从MySchool数据库的Student表中,读取出所有姓“李”学员的姓名参考代码stringsql=SELECTStudentNameFROMStudentWHEREStudentNameLIKE'李%';SqlCommandcommand=newSqlCommand(sql,connection);connection.Open();SqlDataReaderdataReader=command.ExecuteReader();Console.WriteLine(查询结果:);while(dataReader.Read()){Console.WriteLine((string)dataReader[StudentName]);}dataReader.Close();操作数据应用程序毛毛,北大青鸟,良好毛毛姓名:学校:北大青鸟成绩:良好如何对数据库的数据进行增删改?使用ExecuteNonQuery()方法数据库操作数据示例怎样新增学员用户?处理“保存”按钮的Click事件使用ExecuteNonQuery()方法向数据库增加记录演示示例2:向数据库增加记录示例2代码分析关键代码回顾:示例2源代码//创建command对象SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);//打开数据库连接DBHelper.connection.Open();//执行命令intresult=command.ExecuteNonQuery();……返回受影响记录的行数ExecuteNonQuery()方法小结该方法执行指定的sql语句返回受影响的行数使用ExecuteNonQuery()的步骤小结:1、创建Connection对象2、定义sql语句3、创建Command对象4、执行ExecuteNonQuery()方法5、根据返回的结果进行处理privatevoidbtnAdd_Click(objectsender,EventArgse){stringconnStr=……;SqlConnectionconnection=newSqlConnection(connStr);//向数据库中添加年级名称的代码}小结向数据库中添加年级假设数据库连接字符串已知为connStr将添加年级名称部分的代码补充完整stringconnStr=…;SqlConnectionconnection=newSqlConnection(connStr);//插入记录用的SQL语句stringsql=string.Format(INSERTINTOGrade(GradeName)VALUES('{0}'),txtGradeName.Text);//创建Command对象SqlCommandcommand=newSqlCommand(sql,connection);//打开数据库连接connection.Open();//执行插入命令intresult=command.ExecuteNonQuery();connection.Close();//关闭数据库连接参考代码查询数据综合示例如何实现学员信息查询功能?使用DataReader查询数据使用ListView控件显示数据演示示例3:学员信息查询功能示例3代码分析关键代码回顾——查询信息:示例3源代码//执行查询用户命令dataReader=command.ExecuteReader();……while(dataReader.Read()){//读取各列的数据loginId=(string)dataReader[LoginId];……//向ListView中添加记录}dataReader.Close();//关闭DataReader对象回顾DataReader的使用步骤示例3代码分析关键代码回顾——添加记录到ListView:示例3源代码//创建一个ListView项ListViewItemlviStudent=newListViewItem(loginId);//将ID放在Tag中lviStudent.Tag=(int)dataReader[StudentID];//向ListView中添加一个新项lvStudent.Items.Add(lviStudent);//向当前项中添加子项lviStudent.SubItems.AddRange(newstring[]{studentName,studentNO,userState});创建列表视图项添加列表视图项添加列表视图项的子项控件进阶——列表视图控件ListView:列表视图控件以特定样式或视图类型显示列表项ListView控件属性和方法属性说明Columns“详细信息”视图中显示的列SelectedItems选中的项的集合View指定显示五种视图中的哪一种视图方法说明Clear()移除ListView中的所有项ListView控件的主要属性和方法:列表示图项、子项列的集合Columns项的集合Items列表视图项ListViewItem列表视图项的子项ListViewSubItem子项的集合SubItems操作数据综合示例修改学员用户的状态使用快捷菜单列出各个操作使用ExecuteNonQuery()方法操作数据演示示例4:修改用户状态为“非活动”示例4代码分析关键代码回顾——修改用户状态:示例4源代码//修改用sql语句stringsql=string.Format(UpdateStudentSETUserStateId=0WHEREStudentID={0},(int)lvStudent.SelectedItems[0].Tag);//创建Command对象SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);DBHelper.connection.Open();//打开数据库连接result=command.ExecuteNonQuery();//执行命令DBHelper.connection.Close();//关闭数据库连接FillListView();//重新查询信息填充列表视图回顾ExecuteNonQuery()的使用步骤控件进阶——快捷菜单控件ContextMenuStrip:快捷菜单控件为控件指定快捷菜单:ContextMenuStrip属性显示与控件关联的菜单ContextMenuStrip属性和方法属性说明DisplayStyle指定是否显示图像和文本Image显示在菜单项上的图像Text显示在菜单项上的文本方法说明Click单击事件,单击菜单项时发生ContextMenuStrip控件的主要属性和方法操作数据综合示例删除学员用户信息演示示例5:删除学员用户信息小结在示例5中,实现修改学员状态为“活动”的功能参考代码//关键代码//修改用sql语句stringsql=string.Format(UpdateStudentSETUserStateId=1WHEREStudentID={0},(int)lvStudent.SelectedItems[0].Tag);//创建Command对象SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);DBHelper.connection.Open();//打开数据库连接result=command.ExecuteNonQuery();//执行命令DBHelper.connection.Close();//关闭数据库连接操作数据库总结操作数据库相关对象相关对象用途Connection对象连接数据库Command对象执行SQL命令DataReader对象读取查询结果中的数据使用命令操作数据库使用Command对象检索数据库的步骤创建查询用sql语句创建Connection对象创建Command对象返回DataReader对象使用DataReader的Read()方法逐行读取结果使用列名或列的索引从DataReader中获取某列的值返回单个值执行ExecuteReader()方法执行ExecuteScalar()方法使用命令操作数据库使用Command对象更改数据库的步骤创建sql语句Insert、Update、Delete创建Connection对象创建Command对象返回受影响的行数执行ExecuteNonQuery()方法总结ExecuteReader()方法返回什么?ExecuteNonQuery()方法返回什么?使用什么对象读取数据库查询结果?使用什么方法修改数据库数据?Thankyou