资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Visual C#.NET,程序设计,第十一讲 简单数据库编程,沈志忠,北京科技大学,自动化,学院,数据库和数据库系统,数据库:按一定结构组织在一起的相关数据的集合,数据库管理系统DBMS:它是专门负责组织和管理数据信息的软件,数据库应用程序:它使我们能够获取、显示和更新由DBMS存储的数据,数据库的核心是数据,其具体的组织形式与数据库管理系统紧密关联,而表现形式又取决于数据库应用程序。,数据库访问,的几个概念,数据源Data Source 数据源是指本地和远程的物理数据库,或者是XML文件。,数据提供者Data Provider 数据提供者将如何实现与物理数据库或者XML文件连接的复杂过程细节对用户隐藏,展现在用户面前的只是简单地使用该部件轻松地完成连接到一个或多个数据源、传送命令,以及将数据传送到数据集DataSet中。,数据集DataSet 数据集对象用来表示来自一个或多个数据源并保存在内存中的表和关系。,ADO.NET,对象模型的结构,ADO.NET的对象模型由两个局部组成:数据提供程序Data Provider,有时也叫托管提供程序和数据集DataSet。数据提供程序负责与物理数据源的连接,数据集代表实际的数据。这两个局部都可以和数据使用程序通信,如Web Form窗体和Win Form窗体。,1数据提供程序,.Net数据提供程序提供了四个核心对象:Connect,Command,DataReader,DataAdapter,ADO.NET,对象模型的结构,2.数据集,数据集DataSet是记录在内存中的数据,它的结构如下图。,ADO.NET,数据库开发方式,1.,了解,ADO.NET,数据库开发,ADO.NET,在,Windows,平台下主要有,4,种数据库访问方式:,OLEDB,模式、,ODBC,模式、,SQLClient,模式和,Oracle,数据库模式,每一种模式都有前述,ADO.NET,对象模型的一种实现。,OLEDB,模式,OLEDB,模式主要用于访问,OLEDB,所支持的数据库。,在使用,OLEDB,模式时需要引入的命名空间有,System.Data,和,对应于,ADO.NET,对象模型中的对象,,OLEDB,模式的对象名称分别为,OleDbConnection,对象,,OleDbCommand,对象,,OleDbDataAdapter,对象和,OleDbDataReader,对象。,ADO.NET,数据库开发方式,ODBC模式,ODBC模式主要用于连接ODBC所支持的数据库。,在使用ODBC模式时需要引入的命名空间有System.Data和,对应于ADO.NET对象模型中的对象,ODBC模式的对象名称分别为OdbcConnection对象,OdbcCommand对象,OdbcDataAdapter对象和OdbcDataReader对象。,SQLClient模式,SQLClient模式只用于访问MS SQL Server数据库,是ADO.NET中比较特殊的组件。,在使用SQLClient模式时需要引入的命名空间有System.Data和,对应于ADO.NET对象模型中的对象分别是SqlConnection对象、SqlCommand对象、SqlDataAdapter对象和SqlDataReader对象。,ADO.NET,数据库开发方式,2.ADO.NET中两种根本的数据库开发方式,利用Command对象和DataReader对象直接操作和显示数据,可以使用数据命令Command对象和数据读取器对象DataReader以便与数据源直接通信。使用数据命令Command对象和数据读取器对象DataReader直接进行的数据库操作包括:运行查询和存储过程、创立数据库对象、使用DDL命令直接更新和删除,使用DataAdapter对象和DataSet对象,如果应用程序需要访问多个源中的数据,需要与其他应用程序相互操作或者可受益于保持和传输缓存结果,那么使用DataAdapter适配器对象和数据集DataSet是一个极好的选择。,3,使用,ADO.NET,开发数据库应用程序的一般步骤,1根据使用的数据源,确定使用的.NET Framework数据提供程序;,2建立与数据源的连接,需使用Connection对象;,3执行对数据源的操作命令,通常是SQL命令,需使用Command对象;,4使用数据集对获得的数据进行操作,需使用DataReader、DataSet等对象;,5向用户显示数据,需使用数据控件。,SQL,语言,结构化查询语言Structure Query Language,简称SQL是基于关系模型的数据库查询语言,它是一种非过程化的程序语言。,如:Select 图书名称,出版时间 from 图书 where 出版社=机械工业出版社,含义为从BOOK数据库的图书表中将出版社是机械工业出版社的所有图书选出来,并列出它们的图书名称和出版时间。,SQL的根本语法,SQL的根本语法,SQL的根本语法,SQL,语言,1,数据查询,格式,:,SELECT ALL|DISTINCT|TOP N|TOP N PERCENT,*|,列名,1,或表达式,1 AS,列标题,1 ,列名,2,或表达式,2 AS,列标题,2,FROM,表名,1 IN,数据库名,1,别名,1,表名,2 IN,数据库名,2,别名,2,WHERE,条件,GROUP BY,列名,1,列名,2,HAVING,条件,ORDER BY,列名,1 ASC|DESC,列名,2 ASC|DESC,例如,有语句:,Select 学号,姓名,年级 from 学生 Where 专业=自动化,其作用是“列出自动化专业的全部学生的学号、姓名和年级。,又如,有语句:,SELECT 学生.学号,学生.姓名,必修课成绩.课号,必修课成绩.成绩,FROM 学生,必修课成绩 WHERE 学生.学号=必修课成绩.学号,其作用是“查询出所有学生的必修课的学习情况,查询结果中包含学号、姓名、课号和成绩。,2,插入记录,格式:INSERT INTO 表名(字段名1,字段名2,),VALUES(表达式1,表达式2,),例如,有以下语句:,INSERT INTO 学生(学号,姓名,专业)VALUES(040501,朱碧春,计算机软件),其功能是向“学生表中插入一条记录,并给学号、姓名和专业字段赋值。,3修改记录,格式:UPDATE 表名 SET 字段名1=表达式1,字段名2=表达式2 WHERE 条件,4,删除记录,格式:DELETE FROM 表名 WHERE 条件,例如,有以下语句:,DELETE FROM 学生 WHERE 专业=经济管理,其作用是从“学生表中删除所有“经济管理专业的学生。,ADO.NET,对象及其编程,1Connection对象及其使用,在ADO.NET中,通过在连接字符串中提供必要的身份验证信息,使用Connection对象连接到特定的数据源,该对象主要保存了有关数据库效劳器的信息,用于翻开和关闭与数据库的连接。,属性:ConnectionString,方法:Open(),Close(),ADO.NET,对象及其编程,【,例,14-1】,编写一个用来测试连接的应用程序,用来建立与当前目录下的,Microsoft Access 2002,数据库,Student.mdb,的连接。程序的设置界面如图,14-3,所示,程序的运行界面如图,14-4,所示。,图,14-3,程序设计界面,图,14-4,程序运行界面,2,Command,对象及其使用,1Command对象的常用属性,CommandType属性,CommandText属性,CommandTimeout属性,Connection属性,2,Command,对象及其使用,2Command对象的常用方法,Prepare方法,格式:public void Prepare();,ExecuteNonQuery方法,格式:public int ExecuteNonQuery();,执行Transact-SQL INSERT、DELETE、UPDATE及SET语句等命令,返回值为受影响的行数。,ExecuteReader方法,格式:public OleDbDataReader ExecuteReader();,常用来执行返回数据集结果的命令。如Select语句,【例14-2】在应用程序当前目录下,有一个名为Student.mdb的数据库,该数据库中有一个名为student的表,表中的数据如图14-5所示。请使用Command对象执行SQL命令向表中插入一个学生的信息,学生数据如下:,01010106 张和平 男 010101 1985-7-28 安徽无为,插入后,student表中的内容如图14-6所示。,图,14-5,插入前的,student,表中的数据,图,14-6,插入后的,student,表中的数据,3,DataReader,对象及其使用,ADO.NET的DataReader对象可以从数据库中检索只读、只进的数据流,实现对数据源中的数据高速、只向前的访问。,1DataReader对象的常用属性,FieldCount属性,RecordsAffected属性,2DataReader对象的常用方法,Read方法,格式:public bool Read();,使DataReader对象前进到下一条记录,Close方法,格式:public void Close();,关闭DataReader对象,Get方法,格式:public Get (int ordinal);,从ordinal指定的列中读取数据,【例14-3】在应用程序当前目录下,有一个名为Student.mdb的数据库,该数据库中有一个名为student的表。请编写一个程序用来从该表中读取所有男生的数据,并显示出来。程序的设计界面如图14-7所示,程序的运行界面如图14-8所示。程序运行时单击【连接并读取】按钮,将会把所有男生的数据显示在窗体上。,图,14-7,程序设计界面,图,14-8,程序运行界面,4,DataAdapter,对象及其使用,DataAdapter通过使用Command和Connection对象在数据源和数据集DataSet两者之间构成一座桥梁。即结合DataSet使用,使得DataSet“连接到数据源中,以便检索和保存数据。,本质上DataAdapter是容器,它含有4个预先配置好的Command实例,即SelectCommand、InsertCommand、DeleteCommand和UpdateCommand。,1DataAdapter对象的常用属性,SelectCommand属性,InsertCommand属性,UpdateCommand属性,DeleteCommand属性,2DataAdapter对象的常用方法,Fill方法,格式:public int Fill(DataSet dataSet,string srcTable);,从参数srcTable指定的表中提取数据以填充数据集,Update方法,格式1:public override int Update(DataSet dataSet);,把对参数dataSet所指定的数据集进行的插入、删除等操作更新到数据源中。该方法用于数据集中只有一个表。,格式2:public override int Update(DataSet dataSet,string Table);,适用于数据集中存在多个表的情况。,5,DataSet,对象及其使用,1DataSet对象的组成,DataTable对象、DataRelation对象、DataColume对象、DataRow,2DataSet对象的填充,调用DataAdapter对象的Fil
展开阅读全文