《c23与winform基础教学资料》第8章理论.ppt
,C#与Winform程序设计,第八章 ADO.Net查询,2023/8/31,1,中国职业教育联盟课程体系,中国职业教育联盟课程体系,成就百万精英,本章单词,fieldcount(fi:ldkaunt 当前行的列数)record(rik:d 记录,记载)affected(fektd 受到影响的)view(vju:视图)reset(ri:set 重置),回顾1,1、C#中连接数据库,需在程序中导入哪个命名空间?2、SqlConnection用于连接SQLServer数据库的操作,它的哪个方法用于打开连接,哪个方法用于关闭连接?3、SqlCommand的哪个方法用于执行Insert、update、delete SQL命令。,System.Data.SqlClient;,Open()方法打开连接 Close()方法关闭连接,ExecuteNonQuery(),预习检查,使用Command中的哪个方法查询单个值?ExecuteScalar();DataReader对象的常用方法有哪些?Read()Close()要实现断开式连接,需要创建哪两个对象?DataAdpater和DataSet,预习检查,1、创建一个学生数据库StuDB,在数据库中建一张学生信息表StuInfo,包含四个字段(学号:varchar(6),班级:varchar(5),姓名:varchar(10),年龄:int),并插入测试数据,使用ListBox和ExcuteReader实现学生信息查询显示功能,如下图所示。【参考本章节6.2.4】,预习检查,1、在ADO.NET中,为了执行一条SELECT查询语句,需要把Command对象的CommandType属性设置为()。(选择一项)A.CommandType.StoredProcedure B.CommandType.TableDirect C.CommandType.TextD.CommandType.SQL2、在ADO.NET中,使用()对象实现从数据库查询信息的功能,且每次从查询结果中只读取一行数据。(选择一项)A.DataReaderB.ConnectionC.CommandD.DataAdapter3、执行SqlCommand的()方法可以返回一个SqlDataReader对象。(选择一项)A.ExecuteNonQueryB.ExecuteScalarC.ExecuteReaderD.ExecuteDataReader,C,A,C,本章任务,会使用Command对象的方法查询单个值会使用DataReader查谟多行多列,本章目标,掌握使用Command对象的方法查询单个值使用DataReader查询多行多列掌握DataSet和DataAdapter对象的属性和方法掌握使用DataAdpter和DataSet实现断开式连接,连接环境,连接环境是指用户在这种环境下始终保持与数据源的连接,优点环境易于实施安全控制同步问题易于控制数据实时性优于其他环境缺点必须保持持续的网络连接扩展性差,非连接环境,在非连接环境中,中央数据存储的一部分数据可以被独立地复制与更改,在需要时可以与数据源中的数据合并,优点可以在任何需要的时间进行操作,在必要时才连接到数据源不独占连接非连接环境的应用提高了应用的扩展性与性能缺点数据不是实时的必须解决数据的并发性与同步问题,非连接环境,数据已缓存,断开式数据结构,Command对象,Command对象的方法:,使用Command对象查询单个值,数据库,应用程序,Command对象,Connection对象,ExecuteSclar(),实现步骤,Command中的ExecuteScalar()方法:用于返回查询结果中第一行第一列的值,返回值类型是一个Object。实现 步骤如下:1.创建连接对象Sqlconnection.2.设置数据库连接字符串.3.打开数据库连接.4.创建命令对象SqlCommand.5.执行ExecuteSalar()查询.6.输出从数据库中查询出来的值。,查询单个值示例,完成 如下应用程序的基本功能:连接master数据库 利用ExecuteScalar方法查询单个值 将查询出来的值用消息框打印出来,示例1 代码分析,/创建连接对象 SqlConnection conn=new SqlConnection();/设置连接数据库字符串conn.ConnectionString=server=.;database=master;uid=sa;pwd=123456;/打开数据库连接conn.Open();if(conn.State=ConnectionState.Open)/创建命令对象SqlCommand cmd=new SqlCommand();cmd.Connection=conn;/设置SQL命令文本cmd.CommandText=select*from studentinfo;/利用ExecuteScalar方法执行查询object obj=cmd.ExecuteScalar();/利用消息框打印查询出来的数据MessageBox.Show(查询出来的数据为:+obj);,ExecuteScalar查询单个值,返回类型为Object,使用Command对象查询多行多列,数据库,应用程序,Command对象,Connection对象,ExecuteReader,DataReader对象,实现步骤,Command中的ExecuteReader():方法查询多行多列,该方法返回一个DataReader对象实现 步骤如下:1.创建连接对象Sqlconnection.2.设置数据库连接字符串.3.打开数据库连接.4.创建命令对象SqlCommand.5.执行查询.6.读取DataReader中的值。,查询多行多列值示例,完成 如下应用程序的基本功能:连接master数据库 利用ExecuteReader方法查询多行多列 将查询出来的值用ListBox显示出来,示例2 代码分析,/创建连接对象 SqlConnection conn=new SqlConnection();/设置连接数据库字符串conn.ConnectionString=server=.;database=master;uid=sa;pwd=123456;/打开数据库连接conn.Open();if(conn.State=ConnectionState.Open)/创建命令对象SqlCommand cmd=new SqlCommand();cmd.Connection=conn;/设置SQL命令文本 cmd.CommandText=select*from userinfo;/利用ExecuteReader方法执行查询 SqlDataReader reader=cmd.ExecuteReader();,示例2 代码分析,string username=null;string userpwd=null;/向listbox里添加一个文本this.listBox1.Items.Add(用户名tt密码);/循环读取数据while(reader.Read()/取下标为0的数据username=reader0.ToString();/取下标为1的数据userpwd=reader1.ToString();string str=username+tt+userpwd;/将str添加到listbox 里面this.listBox1.Items.Add(str);reader.Close();/关闭reader,循环读取数据,小结1,1、ExecuteReader()的反回值是什么?2、DataReader读取下一行数据使用哪个方法?3、连接数据库需要使用的是哪个对象?打开数据库使用哪个方法?,SqlDataReader,Read(),连接数据库:SqlConnection 打开数据库:Open(),断开式连接,数据库,应用程序,DataAdapter对象,Connection对象,Fill(),DataSet对象,Update,DataAdapter对象,什么是DataAdapter:DataAdapter(即数据适配器)对象是一种用来充当DataSet对象与实际数据源之间桥梁的对象。DataSet对象是一个非连接的对象,它与数据源无关。而DataAdapter则正好负责填充它并把它的数据提交给一个特定的数据源,它与DataSet配合使用,可以执行新增、查询、修改和删除等多种操作。,DataAdapter对象的属性和方法,DataAdapter对象的属性:,DataAdapter对象的方法:,DataSet对象的描述,DataSet对象是支持ADO.NET的断开式、分布式数据方案的核心译象。DataSet对象是数据的内存驻留表示形式。无论数据源是什么,它都会提供一致的关系编程模型。,DataSet对象的属性:,DataSet对象的方法:,实现步骤,实现 步骤如下:1.创建连接对象Sqlconnection.2.设置数据库连接字符串.3.打开数据库连接.4.创建SqlDataAdapter对象和DataSet对象.5.填充数据集.6.循环取数据集中的数据.7.显示数据.,使用DataAdapter和DataSet查询,完成 如下应用程序的基本功能:连接master数据库 利用DataAdapter和DataSet实现断开式查询 将查询出来的值用ListBox显示出来,示例3 代码分析,/创建连接对象SqlConnection conn=new SqlConnection();/设置连接数据库字符串conn.ConnectionString=server=.;database=master;uid=sa;pwd=123456;/打开数据库连接conn.Open();if(conn.State=ConnectionState.Open)/设置SQL命令文本string sql=select*from userinfo;/创建断开式连接对象SqlDataAdapter adpter=new SqlDataAdapter(sql,conn);/创建数据集对象DataSet ds=new DataSet();/填充数据集adpter.Fill(ds);,示例3 代码分析,for(int i=0;i ds.Tables0.Rows.Count;i+)/取出ds中第i行指定字段名的值 string name=ds.Tables0.Rowsiusername.ToString();/取出ds中第i行指定字段名的值 string pwd=ds.Tables0.Rowsipwd.ToString();/添加到listbox中去 this.listBox1.Items.Add(name+tt+pwd);,小结2,1、断开式查询需要创建哪两个对象?2、使用哪个方法可以将数据集中的数据填充到DataSet中?3、ds.Tables0表示什么意思?,SqlDataReader、DataSet,Fill(),表示DataSet中的第1张表,总结,1、SqlCommand的哪个方法用于查询单个值?多行多列呢?2、SqlDataReader的哪个方用于读取数据?3、SqlD支持ADO.NET的断开式、分布式数据方案的核心对象是哪个?,ExecuteScalar()查询单个值ExecuteReader()查询多行多列,Read(),DataSet,感谢观映,中国职业教育联盟课程体系,成就百万精英,2023/8/31,33,中国职业教育联盟课程体系,