c#pp第十章C#数据库操作.ppt
,第10章 C#数据库操作,【案例41】在Visual Studio 2005集成开发环境中创建数据库 本案例中,将学习如何在Visual Studio 2005集成开发环境中创建数据库,效果如图所示。1创建数据库 2创建表 3输入数据,10.1 数据库开发基础,图 在Visual Studio 2005集成开发环境中创建数据库,【案例42】在Microsoft Access 中创建数据库 本案例中将学习如何在Microsoft Access 中创建数据库,效果如图所示。1创建数据库 2创建表 3输入数据,图在Microsoft Access 中创建数据库,【案例43】商品信息浏览 本案例中,将通过数据绑定来快速地创建一个可以浏览商品数据信息的程序。效果如图所示。在本案例实现过程中,将学习如何通过BindingSource组件和DataGridView进行数据绑定,以方便地实现数据库的浏览。案例实现过程如下。1创建项目 2界面设计 3DataGridView控件设置,图 商品信息浏览,10.2.1 数据绑定控件 数据绑定指的是将数据源连接到一个和多个控件,对显示数据、提供数据修改对象,实现数据记录的导航,数据查询等等。数据绑定实现了从程序前台的控件到后台数据源之间的透明连接,设计者只需要将控件的适当属性与数据源相连接,而不需要详细地知道它是如何实现对数据源的访问。,10.2 通过数据组件访问数据库,1简单绑定控件 可进行简单绑定的控件有文本框、标签、按钮、复选框和单选按钮等等。(1)文本框、标签和按钮的绑定展开属性窗口的DataBindings类,设置Text属性绑定到数据源的某一个字段上。单击Advanced属性,可设置字段显示的格式(2)复选框与单选按钮的绑定展开属性窗口的DataBindings类,设置Checked、CheckState、Text属性绑定到相同数据类型的字段上。,2复杂绑定控件 简单绑定只能将控件绑定到当前记录的一个字段上,一次只能显示一个数据项。复杂绑定控件则可以同时显示多个数据项。复杂绑定控件主要有ListBox、ComboBox、DataGridView、ReportView控件等。复杂绑定的常用绑定属性如下:(1)DataSource:绑定到数据源,通常是DataSet数据集(2)DataMember:绑定到所使用的数据集中的数据成员,通常是数据集中的表。(3)DisplayMember:绑定到控件的当前显示字段(4)ValueMember:绑定到控件的值属性,3、DataGridView控件 用来绑定一个或多个数据表,可以灵活地进行数据的浏览和修改4、BindingSource控件 用来简化将窗体上的控件绑定到数据源的过程。控件的常用属性如下:(1)DataSource:绑定到数据源,通常是DataSet数据集(2)DataMember:绑定到所使用的数据集中的数据成员,通常是数据集中的表。5、BindingNavigator控件 可以将绑定到控件中的数据进行导航和操作。控件的常用属性如下:(1)Dock属性:设置控件的位置(2)BindingSource:绑定到数据源,【案例44】商品信息查询 在【案例43】中通过DataGridView控件很容易地实现了信息浏览,但是,在数据库应用开发中,大多数情下并不是使用DataGridView控件来显示数据。因为DataGridView控件对于每个记录的内容较多的表进行显示时会显示不全,且看上去显得繁杂,不宜用于在大量信息中显示出用户需要的信息。本案例中将实现另一种形式的商品信息浏览,来解决这一问题。并且,程序中还可以通过下拉组合框的选项来选择查询要显示的商品信息查询,程序效果如图所示。,图 商品信息浏览,在本案例实现过程中,将学习简单绑定控件和BindingNavigator控件的应用。案例实现过程如下。1创建项目 2界面设计 3BindingSource组件设置 4数据绑定组件设置,10.3 ADO.NET数据应用,10.3.1 ADO.NET简介 1ADO.NET概述 ADO.NET是.NET FrameWork中用以操作数据库的类库的总称。ADO.NET 模型中包含了能够有效地管理数据的组件类。ADO.NET 是一组向.NET 程序员公开数据访问服务的类。,DataSet,SQL Server.NET 数据提供程序,OLE DB.NET 数据提供程序,SQL Server 7.0(或更高版本),OLEDB 数据源(SQL Server 6.5),OleDbConnection,OleDbDataAdapter,SqlDataAdapter,SqlConnection,DataTable,DataTable,ADO.NET 对象模型,3ADONET访问数据库的步骤ADO.NET编程过程一般可以分为五步:(1)选择所使用的数据源,即选择使用哪个.NET Frameword数据提供程序(2)与数据库建立连接(创建Connection对象)(3)发出SQL命令,执行对数据库的操作(创建Command对象或DataAdapter对象)(4)使用数据集对由数据库返回获得的数据进行各种操作(创建DataReader对象或DataSet对象缓存数据)(5)使用各种数据控件构建用户界面,将数据库内容显示给用户,10.3.2.NET Framework数据提供程序,.NET Framework包括4种不同的数据提供程序,在应用程序中使用ADO.NET时,必须根据数据提供程序引入不同的命名空间。using System.Data;1、SQL Server.NET Framework数据提供程序:访问SQL Server 7.0或以上版本的数据源,需引入命名空间2、OLE DB.NET Framework数据提供程序:访问OLE DB公开的数据源,如Access,需引入命名空间,10.3.2.NET Framework数据提供程序,3、ODBC.NET Framework数据提供程序:访问ODBC公开的数据源,需引入命名空间4、Oracle.NET Framework数据提供程序:访问Oracle数据源,需引入命名空间,数据连接对象Connection Connection对象用于连接数据库,可通过该连接来访问数据库。不同的数据库有不同的Connection对象。1连接不同数据源的Connection SqlConnection对象:用于连接SQL Server7.0及以上版本的数据库 OleDbConnection对象:用于连接OLE DB数据库(如SQL Server6.5以前版本和Access)ObdcConnection对象:用于ODBC数据源应用程序 OracleConnection对象:用于连接Oracle数据库,2Connection常用属性和方法(1)ConnectionString属性:获取或设置用于打开数据库的字符串。(2)DataSource属性:获取数据源的服务器名或文件名。(3)Database或Initial Catalog属性:获取当前数据库或连接打开后要使用的数据库的名称。(4)User ID属性和Password属性:获取访问数据库的用户名和密码,(5)Open方法:打开数据库连接。(6)Close方法:关闭到数据源的连接。3、创建Connection对象格式:Connection 对象名=new Connection(连接字符串)对象名.Open()对象名.Close(),连接到Access数据库test.mdb:OleDbConnection myconn=newOleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:test.mdb”);字符串太长,可以改写成如下两条命令:string strCon=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:test.mdb”;OleDbConnection myconn=new OleDbconection(strCon);myconn.Open();连接到SQL Server2005中的数据库northwindString strCon=“Data Source=teacher1;Database=northwind;Integrated Security=true”;SqlConnection muconn=new SqlConnection(strCon);myconn.Open();,多媒体演示 ADO.NET 对象模型,比较使用 DataSet 与 DataReader,使用 DataReader方式访问数据 需使用Command对象和DataReader对象 使用DataSet方式访问数据 需使用DataAdapter对象和DataSet对象,创建 DataReader,使用 DataReader创建并打开数据库连接创建 Command 对象从 Command 对象创建 DataReader调用 ExecuteReader 方法使用 DataReader 对象关闭 DataReader 对象关闭数据库连接,1,2,3,4,5,6,7,10.3.4 Command对象,Command对象用来向数据库发出各种SQL命令,例如:查询、插入、修改和删除等命令。根据.NET Framework数据提供程序的不同,选择相应的Command对象,有SqlCommand、OleDbCommand、ObdcCommand、OracleCommand对象。1、Command对象主要属性:(1)CommandText:获取或设置欲对数据源执行的SQL命令、存储过程名称或数据表名称(2)Connection:获取或设置Command对象所使用的数据连接,2、Command对象主要方法:(1)ExecuteReader:返回记录行,给DataReader对象(2)ExecuteNonQuery:执行Insert、Delete、Update语句等命令(3)ExecuteScalar:从数据库中检索单个值3、创建Command对象的语法:Command 对象名=new Command(SQL命令,连接字符串)或Command 对象名=new Command;对象名.CommandType=Command.Text;对象名.Command.Text=SQL命令;对象名.Connection=连接字符串;,10.3.5 DataReader对象,ADO.NET有两种访问数据源的方式,分别为DataReader对象及DataSet对象。前者是高度优化的对象,专为仅向前方式滚动只读记录而设计。后者是记录在内存中的缓存,可以从任何方向随意访问和修改。DataReader对象是读取数据源最简单的方式,占用内存空间小,效率佳,但是灵活性差。1、使用DataReader对象读取数据库的步骤如下:(1)使用Connection对象创建数据连接(2)使用Command对象对数据源执行SQL命令并返回结果(3)使用DataReader对象读取数据(OleDbDataReader或SqlDataReader),DataReader对象是通过Command对象的ExecuteReader方法从数据源中检索行创建的。2、DataReader对象的主要方法:(1)Read方法:读取DataReader对象中的下一条数据并返回布尔值。True表示还有下一条数据(2)Get方法:通过向DataReader传递列的名称(Getname(ordinal))或序号(Getordinal(name))引用,可以访问返回的每一列(Getvalue(ordinal)),并且序号从0开始。,string strCon=“Data Source=teacher1;Database=northwind;Integrated Security=true;SqlConnection myConn=new SqlConnection(strCon);string strCom=SELECT*FROM book order by 编号;myConn.Open();SqlCommand myCom=new SqlCommand(myCom,myConn);SqlDataReader myreader=myCom.ExecuteReader();myreader.Read();textBox1.Text=myreader.GetInt32(0).ToString();textBox2.Text=myreader.GetInt32(1).ToString();textBox3.Text=myreader.GetString(2);textBox4.Text=myreader.GetString(3);textBox5.Text=myreader.GetBoolean(4).ToString;myreader.Close();myConn.Close();,SQL Server 2000,DataSet,DataTable,DataTable,物理存储数据,OleDb 数据库,SqlDataAdapter,SqlConnection,DataTable,Web 服务器内存,OleDbDataAdapter,OleDbConnection,DataSet,DataAdapter 对象模型,sp_SELECT,Command,SelectCommand,UpdateCommand,InsertCommand,DeleteCommand,DataAdapter,Command,Command,Command,Connection,sp_UPDATE,sp_INSERT,sp_DELETE,数据库,DataSet,10.3.6 DataAdapter对象 DataAdapter数据适配器是通过SQL命令访问数据库的中间件,主要作用是在数据库与DataSet对象之间传递数据,用于填充DataSet数据集和更新数据源。1、两个主要的DataAdapter对象:OleDbDataAdapter:适用于Access数据源SqlDataAdapter:适用于SQL Server7.0以上版本2、创建DataAdapter对象的格式:DataAdapter 对象名=new DataAdapter(SQL命令,连接字符串)3、DataAdapter的主要方法:(1)Fill方法:将数据从数据源装载到DataSet对象中(2)Update方法:为DataSet中每个已插入、已更新或已删除的行调用相应的Insert、Update、Delete语句。,10.3.7 DataSet对象 数据集DataSet 是ADO.NET 模型的核心构件,是一个数据集,主要用来存放从数据库中取回的数据,用于支持ADO.NET中的离线数据访问。DataSet对象是一种非连接的数据缓存,可看作是复制到内存中的数据库。当使用DataAdapter的Fill方法,将所连接数据库中的数据放入DataSet对象之后,与数据库的连接即断开。应用程序直接从DataSet对象中读取数据,更新数据时,先更新DataSet对象中的数据,再将更新传回数据库。1、创建DataSet对象的格式:DataSet 对象名=new DataSet();,程序在处理DataSet中的数据时,无需要建立与数据库的持久连接,只有在填充数据和保存对数据修改时才需要与数据源相连接,在其它时间处理数据时,不需要保持与数据源的连接,极大地节省了系统开销。,每个 DataSet 都可以包含多个 DataTable 对象,每个 DataTable 都代表了来自数据源的一张表。Tables属性值是DataTable对象集。每个DataTable 数据表都由相应的行和列组成。一个DataColumn对象代表了数据表中的一个列,Columns属性值是DataColumn对象集。一个DataRow对象代表了数据表中的一行,Rows属性值是DataRow对象集。因此可以直接使用这些对象访问数据集中的数据。例:textBox1.Text=myDataSet.Tables0.Rows3.ItemArray1.ToString();DataSet对象的Relations属性,是DataRelation对象集,每个DataRelation对象表达了数据表之间的关系。,使用 DataSet访问数据,数据库,将DataSet返回给客户端,客户端检索数据,创建 SqlConnection 和 SqlDataAdapter,使用DataAdapter填充DataSet并关闭连接,SqlDataAdapter,SqlConnection,数据绑定控件,1,2,3,4,5,更新DataSet,使用 SqlDataAdapter 打开SqlConnection 连接,更新数据库并关闭连接,6,7,客户端,string strCon=Data Source=teacher1;Database=northwind;Integrated Security=true;SqlConnection myConn=new SqlConnection(strCon);string strCom=SELECT*FROM book;myConn.Open();SqlDataAdapter myDa=new SqlDataAdapter(strCom,myConn);DataSet myDataSet=new DataSet();myDa.Fill(myDataSet,book);myConn.Close();,【案例45】商品信息编辑 本案例中,将通过ADO.NET对象实现对数据库中的数据进行编辑,程序效果如图所示。在本案例实现过程中,将学习ADO.NET对象的应用。案例实现过程如下。1创建项目 2界面设计 3BindingSource组件设置 4数据绑定组件设置 5添加事件处理程序,图6-3-2 商品信息编辑,