第5章 数据库操作

上传人:gu****n 文档编号:243120607 上传时间:2024-09-16 格式:PPT 页数:119 大小:3.63MB
返回 下载 相关 举报
第5章 数据库操作_第1页
第1页 / 共119页
第5章 数据库操作_第2页
第2页 / 共119页
第5章 数据库操作_第3页
第3页 / 共119页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库操作,第,5,章,我们应该清醒地意识到欲在网络编程领域有所建树,,必须先成为编程高手,努力吧,同学们,功到自然成!,本章知识结构框图,数据库操作概述,数据库的,连接,连线式数据库操作,离线式数据库操作,外基本定义,1,个对象,3,种数据库,连接实例,定义与功能,3,个对象,5,个步骤,1,个实例,定义与功能,2,个对象,5,个步骤,1,个实例,基本定义,1,个类库,5,个对象,学习激励与案例导航,网易公司首席架构设计师丁磊,丁磊,网易公司首席架构设计师,,1971,年生于,浙江宁波。,2007,福布斯中国富豪榜排名第,63,位,资,产,75,亿元。,1997,年,6,月创立网易公司。丁磊将网易,公司从一个,10,几个人的私企发展到今天拥有超过,1500,多名员工,在美国公开上市的知名互联网技,术企业。据易观国际数据统计网易在中国网游市,场份额中排名第二。,第,5,章 数据库操作,5.1 ASP.NET,数据库操作概述,5.2,数据库的连接,5.3,连线式操作数据库,5.4,数据库的离线操作,第,5,章 数据库操作,5.1 ASP.NET,数据库操作概述,5.2,数据库的连接,5.3,连线式操作数据库,5.4,数据库的离线操作,5.1.1,数据库概述,ASP.NET,的四大板块,数据库操作,服务器控件,常见对象,C#,语言基础,常用的数据库管理系统,Oracle,Sybase,Informix,Microsoft SQL Server,Visual FoxPro,Microsoft Access,最常用的以,Microsoft SQL Server,为主,5.1.2 ADO.NET,(,Active Data Object,),ADO.NET,共有,5,个常用对象,它们是,Connection,、,Command,、,DataReader,、,DataSet,、,和,DataAdapter,如表,5-1,所示。,表,5-1 ADO.NET,常用对象,对象,功能,Connection,数据库连接对象,用于建立数据库的连接。,Command,用于执行数据库命令,针对不同的数据库提供了,SqlCommand,、,OleDbCommand,、,Odbcommand,和,OracleCommand,几种访问方式,同时也提供从数据库中检索数据、插入数据、修改数据和删除数据的功能。,DataReader,用于读取数据库中的数据,其优点是速度比较快,缺少是但功能有限。,DataSet,DataSet,对象是数据在内存中的表示形式。它包括多个,DataTable,对象,而,DataTable,包含列和行,就象一个普通的数据库中的表一样。,DataAdapter,数据库适配器,,DataSet,对象与数据库之间的桥梁,它通过,Fill,方法把数据库中的数据映射填充到,DataSet,对象中,通过,Update,方法更新数据库中的数据,使,DataSet,对象中的数据与数据库中的数据保持一致。,5.1.3 ADO.NET,中的各类数据库接口,SQL,Server.NET,用来访问,SQL Server 7,以及更高级版本,ADO.NET,提供了,四种数,据驱动,程序,OkeD.NET,用来访问包括,SQL,以及其他类型的数据库,Oracle,Db.NET,专门访问,Oracle 8iDataReader,及以上版本,的数据库,,ODBC.NET,用来访问,ODBC,数据源,第,5,章 数据库操作,5.1 ASP.NET,数据库操作概述,5.2,数据库的连接,5.3,连线式操作数据库,5.4,数据库的离线操作,6.2.1,数据库连接概述,引入命名空间,各种数据库的,命名空间各不相同,1,对,Connection,对象实例化,2,设置连接语句,3,打开连接,4,数据库连接并不复杂,只要执行下列步骤即可完成。,1,引入命名空间,各种数据库的命名空间各不相同。,如果使用的是,SQL Server,数据库,则在编写的程序头部写下如下代码:,using,System.Data.SqlClient,;,一,如果使用的是,Access,数据库,则在编写的程序头部写下如下代码:,using,System.Data.OleDb,;,二,如果使用的是,Oracle,数据库,则在编写的程序头部写下如下代码:,using,System.Data.OracleClient,。,三,2,对,Connection,对象实例化,SQL Server,数据库,SqlConnection,sqlconstr,= new,SqlConnection,();,ACCESS,数据库,OleDbConnection,oledbconnstr,= new,OleDbConnection,();,Oralce,数据库,OleDbConnection,Oracleconnstr,= new,OracleConnection,();,其中斜体部分由编程者自行命名,但成熟的程序员多命名为:,sqlconstr,即,sql(SQL,数据库,),与,connection,(连接)及,string,(字符串)三个单词的缩写,合,起来意为,SQL,数据库连接字符串。,对象实例化,:,初学者往往不理解什么是对象实例化,我们知道,在,C,语言中使用变量要先声明,让计算机知道这是一个变量。同样在使用对象的时候也要先声明,告诉计算机,sqlconstr,是代表数据库连接的一个特殊,“,变量,”,。,3,设置连接语句,(,1,),SQL Server,数据库:,(,2,),ACCESS,数据库:,(,3,),Oracle,数据库:,sqlconstr.ConnectionString,= server =,localhost,;,database =,test;uid,=,sa;pwd,=,,也可以用,sqlconstr.ConnectionString,= Data Source=,localhost;Initial,Catalog=,test;User,ID=,sa;Password,=;,3,设置连接语句,(,1,),SQL Server,数据库:,(,2,),ACCESS,数据库:,(,3,),Oracle,数据库:,oledbconnstr.ConnectionString,= provider = Microsoft.Jet.OLEDB.4.0;data source =,c:lxtest.mdb,;,3,设置连接语句,(,1,),SQL Server,数据库:,(,2,),ACCESS,数据库:,(,3,),Oracle,数据库:,Oracleconnstr.ConnectionString,= server=,MyOraServer,; Provider=MSDAORA; user id=,sa;password,=”,。,3,设置连接语句,(,1,),SQL Server,数据库:,(,2,),ACCESS,数据库:,(,3,),Oracle,数据库:,4.,打开连接,表,5-2 Connection,对象常用属性及方法,属性及方法,功能,ConnectionString,属性,用于读取或设置打开数据库的字符串,ConnectionTimeout,属性,用于读取数据库尝试连接秒数,DataSource,属性,用于读取数据库所在位置及所在位置的服务器名称或文件夹名称,Database,属性,用于读取或设置连接的数据库名称,State,属性,用于读取当前连接状态,Provider,属性,用于读取数据库驱动程序,Open(),方法,打开数据连接,Close(),方法,关闭数据连接,5.2.2,连接到,Access,数据库,Access,数据库的连接字符串的属性如表,5-3,所示。,表,5-3 OLEDB.NET,数据库连接字符串属性,属性,说明,Data source,数据源,一般为数据库文件的物理路径,Provider,数据源的驱动程序,一般使用,Microsoft.jft.OLEDB.4.0,驱动程序。还可以使用,SQLOLEDB,驱动程序连接到,SQL Server 6.5,即以上版本数据库,使用,MSDAORA,驱动程序可以连接到,Oracle 7,数据库,Database,数据库的名称,一般为应用程序使用的数据库名称,Connection timeout,表示连接超时的时间,默认为,15,秒,5.2.3,连接到,SQL Server,数据库,连接,SQL Server,数据库的字符串相关属性如表,5.4,所示。,表,5-4 SQL Server,数据库连接字符串常用属性,属性,说明,Data source,SQL Server,数据源,即服务器所在机器名称或者是服务器,IP,地址,Server,服务器如数据库所在服务器名称,Database,数据库名称,User ID,SQL Server,数据库的用户,ID,Password,SQL Server,数据库的用户密码,Pooling,设置是否使用数据库的连接池,Intergrated,Security,设置登陆数据库时是否使用系统集成验证,Connection timeout,表示连接超时的时间,默认为,15,秒,5.2.4,连接到,Oracle,数据库,Oracle,数据库的连接字符串相关属性如表,6-5,所示。,表,5-5 Oracle,数据库连接字符串常用属性,属性,说明,Data source,Oracle,数据库的数据源,即服务器名称也可是服务器,IP,地址,Server,服务器如数据库所在服务器名称,Database,数据库名称,User ID,Oracle,数据库的用户,ID,Password,Oracle,数据库的用户密码,Pooling,设置是否使用数据库的连接池,Intergrated,Security,设置登陆数据库时是否使用系统集成验证,Connection timeout,表示连接超时的时间,默认为,15,秒,5.2.5,数据库连接实例,(,1,)启动,Visual Studio 2008,在菜单依次单击,【,文件,】【,新建,】【,网站,】,【ASP.NET,网站,】,;,(,2,)在设计窗口页面上点右键,选择查看代码;,(,3,)在,Page_load,事件输入表,5-6,代码;,表,5-6,使用,Connection,对象连接数据库代码及解释,程序代码,对应注释,using,System.Data.SqlClient,;,public partial class _5_01 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= ,server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,sqlconstr.Open,();,Response.Write,(,数据库已经打开,);,sqlconstr.Close,();,引用,SqlClient,命名空间,Connection,对象实例化,通过,ConnectionString,来获取或设置连接语句,打开连接,关闭连接,(,4,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-1,数据库连接实例,第,5,章 数据库操作,5.1 ASP.NET,数据库操作概述,5.2,数据库的连接,5.3,连线式操作数据库,5.4,数据库的离线操作,5.3.1,连线式操作数据库概述,连线式数据库操作也有它自身的优点 是什么呢?,那就是它能够高效快速的访问数据库。,Connection,Command,+,连线式数据库,三个对象,+,DataReader,5.3.2,连线式操作数据库的流程,设定数据库连接字符串,1,打开数据库,2,使用,Command,对象向数据库下达操作命令。,3,使用,DataReader,对象进行各种读取操作。,4,关闭数据库,5,5.3.3,连线式所使用的,Command,对象详解,使用,Command,对象执行,SQL,语句,并返回相应的结果。,使用,Command,对象执行存储过程。,(,1,),(,2,),表,5-7,给出了,Command,对象常用属性及方法。,表,5-7,Command,对象常用属性及方法,属性,说明,CommandText,用于读取或设置要执行的,SQL,语句或存储过程,CommandTimeout,用于读取或设置执行命令需要等待的时间,CommandType,用于读取或设置,CommandType,命令的类型,Connection,用于读取或设置命令所使用的连接对象,Parameters,用于读取与该命令关联的参数集合,Transaction,用于读取或设置执行命令的任务,ExecuteReader,(),执行查询,并返回查询数据,ExecuteScalar,(),执行查询,并返回查询数据第一行第一列数据值,ExecuteNonQuery,(),执行非查询命令,并返回受影响的行数,ExecuteXmlReader,执行查询,返回,XML,数据,Cancel,取消执行命令,5.3.3.1,创建,Command,对象,(,1,),先声明一个,Command,对象,然后设置相应的,CommandText,和,Connection,属性。,(,2,),创建,Command,对象时直接对,CommandText,和,Connection,属性进行赋值。,以下语句给出了两种创建,Command,对象的方式。,/,第一种方式,SqlCommand,myCommand,= new,SqlCommand,();,/,第二种方式,SqlCommand,catCMD,= new,SqlCommand(SELECT,CategoryID,CategoryName,FROM Categories,nwindConn,);,5.3.3.2,使用,Command,对象,使用,Command,对象操作数据库的方法主要有以下四种:,1,读取整个数据表,2,执行,SQL,命令,3,调用存储过程,4,返回单一结果,1,读取整个数据表,表,5-8,是通过,ExecuteReader,方法执行读取整个数据表,并绑定,GridView,控件的,应用案例,运用到了,Command,对象的,ExecuteReader,方法,操作步骤如下:,(,1,),(,2,),(,3,),启动,Visual Studio 2008,在菜单上依次单击,【,文件,】【,新建,】【,网站,】【ASP.NET,网站,】,;,在工具箱上拖曳或双击,DataView,图标至设计,窗口;,在设计窗口页面上点右键,选择查看代码,,在,Page_load,事件输入表,5-8,代码;,表,5-8,读取整个数据表程序代码及解释,程序代码,对应注释,using,System.Data.SqlClient,;,public partial class _5_02 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,string,safeSql,= Select * FROM book;,SqlCommand,cmd,= new,SqlCommand(safeSql,sqlconstr,);,sqlconstr.Open,();,SqlDataReader,myReader,=,cmd.ExecuteReader,();,this.GridView1.DataSource =,myReader,;,GridView1.DataBind();,sqlconstr.Close,();,设置数据库连接字符串,设置,SQL,语句,command,对象实例化,打开数据库,执行查询命令,绑定数据源,关闭数据库,(,4,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-8,读取数据表实例,2,执行,SQL,命令,表,5-9,是通过,ExecuteNonQuery,将一条记录插入数据库,并更新到,GridView,控件,的应用案例,运用到了,Command,对象的,ExecuteNonQuery,方法,操作步骤如下:,(,1,)启动,Visual Studio 2008,,在菜单依次单击,【,文件,】【,新建,】【,网站,】,【ASP.NET,网站,】,;,(,2,)在工具箱上拖曳或双击,DataView,图标,,4,个标签,Label1,、,Label2,、,Label3,、,Label4,,并将相应的,Text,属性修改为:编号、书名、作者、单价,,4,个文,本框,TextBox1,、,TextBox2,、,TextBox3,、,TextBox4,,,2,个按钮,Button1,和,Button2,至 设计窗口;设计窗口如图,5-9,所示:,图,6-9,执行,SQL,命令实例设计,(,3,)双击按钮,Button1,,编写代码如表,5-9,所示;,表,5-9,执行,SQL,命令程序代码及解释,程序代码,对应注释,protected void Button1_Click(object sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,string,UpdateSql,= INSERT INTO Book (ID,Title,Author,UnitPrice,) Values( + TextBox1.Text.ToString().Trim() + , + TextBox2.Text.ToString().Trim() + , + TextBox3.Text.ToString().Trim() + , + TextBox4.Text.ToString().Trim() + );,SqlCommand,cmd,= new,SqlCommand(UpdateSql,sqlconstr,);,sqlconstr.Open,();,cmd.ExecuteNonQuery,();,sqlconstr.Close,();,BindData,();,设置数据库连接字符串,设置插入语句,command,对象实例化,打开连接,执行插入语句,关闭连接,绑定,DataView,(,4,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-9,执行,SQL,命令实例,3,调用存储过程。,表,5-10,是调用带参数的存储过程查询数据库,并更新到,GridView,控件的应用案例,,综合运用了,Command,对象的各种属性和方法,操作步骤如下:,在工具箱上拖曳或双击,DataView,图标至设计窗口;,启动,Visual Studio 2008,在菜单依次单击,【,文件,】【,新建,】【,网站,】【ASP.NET,网站,】,;,在设计窗口页面上点右键,选择查看代码,在,Page_load,事件输入表,6-10,代码;,(1),(2),(3),表,5-10,调用存储过程程序代码及解释,程序代码,对应注释,using,System.Data.SqlClient,;,public partial class _5_04 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,SqlCommand,cmd,= new,SqlCommand(Pro_SelectBookCategory,sqlconstr,);,cmd.CommandType,=,CommandType.StoredProcedure,;,SqlParameter,myParm,=,cmd.Parameters.Add(CategoryID,SqlDbType.Int,);,myParm.Value,= 1;,sqlconstr.Open,();,SqlDataReader,myReader,=,cmd.ExecuteReader,();,this.GridView1.DataSource =,myReader,;,GridView1.DataBind();,sqlconstr.Close,();,创建连接,设置连接字符串,指定存储过程,设置命令类型为,StoredProcedure,设置存储过程的参数,设置存储过程参数的值,创建,DataReader,对象,并输出查询结果,绑定,DataView,关闭连接,(,4,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-10,调用存储过程实例,4,返回单一结果。,表,5-11,是使用,Count,函数来返回表中的记录数的应用案例,运用了,Command,对象的,ExecuteScalar,方法,操作步骤如下:,(,1,)启动,Visual Studio 2008,在菜单依次单击,【,文件,】【,新建,】【,网站,】,【ASP.NET,网站,】,;,(,2,)在设计窗口页面上点右键,选择查看代码,在,Page_load,事件输入表,5-11,代码;,表,5-11,返回单一结果程序代码及解释,程序代码,对应注释,using,System.Data.SqlClient,;,public partial class _5_05 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,sqlconstr.Open,();,String,mySelectQuery,= SELECT Count(*) FROM Book;,SqlCommand,myCommand,= new,SqlCommand(mySelectQuery,sqlconstr,);,Int32 count = (Int32),myCommand.ExecuteScalar,();,Response.Write,(,数据行数:,+count);,sqlconstr.Close,();,创建连接,设置连接字符串,打开数据库,设置,SQL,语句,command,对象实例化,检索单个值,返回结果,输出结果,关闭数据库,(,3,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-11,返回单一结果实例,5.3.4,连线方式所使用的,DataReader,对象详解,DataReader,对象提供的属性以及方法见表,5-12,所示。,表,5-12,DataReader,对象常用属性及方法,属性,说明,FieldCount,用于读取当前行中的列数,HasRows,用于读取指示,DataReader,是否包含一行或多行的值,IsClosed,用于读取指示数据读取器是否已关闭的值,Close,关闭,DataReader,对象,GetBoolean,用于读取指定列的布尔值形式的值,GetByte,用于读取指定列的字节形式的值,GetChar,用于读取指定列的单个字符串形式的值,GetDateTime,用于读取指定列的,DateTime,对象形式的值,GetDecimal,用于读取指定列的,Decimal,对象形式的值,GetDouble,用于读取指定列的双精度浮点数形式的值,GetFieldType,用于读取指定对象的数据类型,GetFloat,用于读取指定列的单精度浮点数形式的值,GetInt32,用于读取指定列的,32,位有符号整数形式的值,GetInt64,用于读取指定列的,64,位有符号整数形式的值,GetName,用于读取指定列的名称,GetSchemaTable,返回描述,SqlDataReader,的列元数据的,DataTable,GetSqlBoolean,用于读取指定列的,SqlBoolean,形式的值,GetString,用于读取指定列的字符串形式的值,GetValue,用于读取以本机格式表示的指定列的值,NextResult,读取批处理,Transact-SQL,语句的查询结果时,数据读取器前进一步,Read,使,SqlDataReader,前进到下一条记录。,6.3.4.1,创建,DataReader,对象,创建,DataReadef,对象只能通过,Command,对象的,ExecuteReader,方法进行创建,而,不能像其他的类那样直接使用,New,关键字创建。,以下语句创建了一个,SqlDataReader,对象:,SqlDataReader,myReader,=,myCommand.ExecuteReader,();,6.3.4.2,使用,DataReader,对象,GetDateTime,1,GetDouble,2,GetGuid,3,GetInt32,4,DataReader,访问其本机数据类型,使用,DataReader,对象的,Read,方法可从查询结果中获取行数据。根据获取数据方法的,不同,该操作可以分为以下四种:,一,使用类型访问数据列,二,使用索引访问数据列,三,使用列名访问数据列,四,访问数据列的名称和属性,1.,使用类型访问数据列,DataReader,对象可以使用不同类型数据的方法查询返回行的每一列。具体语句如下:,while (,myReader.Read,(),Response.Write,(ID:+myReader.GetInt32(0) + , +,书名:, + myReader.GetString(1)+);,myReader.Close,();,应用提醒,:,使用,DataReader,对象时尽量使用和数据库字段类型匹配的方法来取得相应的值,比如对于整形的字段使用,GetInt32,对字符类型的字段使用,GetString,。,2.,使用索引访问数据列,DataReader,对象可以直接使用列的索引查询返回行的每一列。具体语句如下:,while (,myReader.Read,(),Response.Write,(,ID,:,myReader0.ToString(),+ , +,书名:,myReader1.ToString(),+,);,myReader.Close,();,3,使用列名访问数据列,DataReader,对象还可以直接使用列的名称查询返回行的每一列。具体语句如下:,while (,myReader.Read,(),Response.Write(ID,:,+,myReader“id,” + , +,书名:, +,myReader“Title,”+);,myReader.Close,();,4,访问数据列的名称和属性,DataReader,对象进一步提供了,GetName,和,GetDataTypeName,方法获取返回行,每一列的列名和数据类型。具体语句如下:,Response.Write,(,myReader.GetName(i,),myReader.GetDataTypeName,(i);,表,6-13,是过,Command,对象执行查询命令,通过,DataReader,对象读取全部,数据,最后将结果更新到,GridView,控件的应用案例,综合运用了,Command,对象和,DataReader,对象的各种属性和方法,操作步骤,如下:,(,1,)启动,Visual Studio 2008,,在菜单上依次单击,【,文件,】【,新建,】【,网站,】,【ASP.NET,网站,】,;,(,2,)在设计窗口页面上点右键,选择查看代码,在,Page_load,事件输入表,6-13,代码;,表,6-13,通过,DataReader,读取数据程序代码及解释,程序代码,对应注释,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,using,System.Data.SqlClient,;,public partial class _5_06 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,String,mySelectQuery,= SELECT * FROM Book;,SqlCommand,myCommand,= new,SqlCommand(mySelectQuery,sqlconstr,);,sqlconstr.Open,();,SqlDataReader,myReader,=,myCommand.ExecuteReader,();,while (,myReader.Read,(),Response.Write(ID:+myReader.GetInt32(0) + , +,书名:, + myReader.GetString(1)+);,myReader.Close,();,sqlconstr.Close,();,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,创建连接,设置连接字符串,设置,SQL,命令,创建,Command,对象,打开连接,创建,DataReader,对象,循环读取数据,关闭,DataReader,对象,断开连接,应用提醒,:,在同一时间内,一个,Connection,对象只能打开一个,DataReader,对象。在该,DataReader,对象关闭之前,无法打开其他,DataReader,对象,直到该,DataReader,对象调用,Close,方法为止。 因此,应该尽早的关闭,DataReader,对象。,(,3,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-13,使用,DataReader,对象读取数据实例,6.3.5,连线方式实例,表,6-13,是使用连线式数据库操作的应用案例,具体操作步骤如下:,(,1,)启动,Visual Studio 2008,在菜单依次单击,【,文件,】【,新建,】【,网站,】【ASP.NET,网站,】,;,(,2,)在工具箱上拖曳一个,Table,,将,Table,中放入,1,个,GridView,、,1,个,CheckBox,,,3,个按钮,分别将,CheckBox,和,3,个按钮的,Text,属性修改为全选、全删、取消和添加。右键点击,GridView,,选择显示智能标记,将,GridView,的数据列分别绑定,id,、,Title,、,Author,和,UnitPrice,,并将,HeaderText,属性修改为:编号、书名、作者、单价;添加,2,个,CommandField,,并分别将,ShowEditButton,、和,ShowDeleteButton,属性选择为,True,;添加,1,个,TemplateField,,将里面放入一个,CheckBox,。在工具箱上拖曳一个,Table,,将,Table,中放入,4,个标签,label1-label4,,,4,个文本框,textbox1-textbox4,,,2,个按钮,Button1,和,Button2,至设计窗口。将,label1-label4,相应的,Text,属性修改为编号、书名、作者、单价,,Button1,和,Button2,的,Text,属性修改为确定和取消;设计窗口如图,6-14,所示:,图,6-14,连线式数据库操作实例设计,(,3,)在设计窗口页面上点右键,选择查看代码,在,Page_load,事件输入表,6-14,代码,并创建函数,BindData,读取整张数据表和绑定,GridView,;,表,6-14,读取整张表程序代码及解释,4,)双击,GridView,的,RowEditing,、,RowCancelingEdit,和,RowUpdating,事件,,输入表,6-15,代码;,表,6-15,修改数据行程序代码及解释,(,5,)双击添加按钮(,Button5,)、确定按钮(,Button1,)和取消按钮(,Button2,),,分别输入表,6-16,代码;,表,6-16,添加数据行程序代码及解释,(,6,)双击,GridView,的,RowDeleting,事件,输入表,5-17,代码;,表,6-17,删除数据行程序代码及解释,(,7,)按下,CTRL+F5,运行程序,得到如下程序界面:,第,6,章 数据库操作,6.1 ASP.NET,数据库操作概述,6.2,数据库的连接,6.3,连线式操作数据库,6.4,数据库的离线操作,Connection,DataAdapter,DataSet,离线式数据库包括三个对象,6.4.1,离线方式操作数据库概述,设定数据库连接字符串;,1,使用,Command,对象向数据库下达查询命令;,2,使用,DataAdapter,对象的,Fill,方法填充,DataSet,对象;,3,使用,DataSet,命令进行各种数据操作;,4,使用,DataAdapter,对象的,Update,方法更新数据库。,5,6.4.2,离线方式操作数据库的流程,6.4.3,离线方式所使用的,DataAdapter,对象详解,DataAdapter,对象在,ADO.NET,中扮演着数据库和,DataSet,之间桥梁的角色。,DataAdapter,对象通过,Fill,方法将数据填充到,DataSet,中,当完成对数据的添加、,删除或者修改等操作后通过,Update,方法更新数据库中的数据。,应用提醒,:,DataAdapter,对象和,DataSet,对象之间没有直接的数据库连接。当通过,DataAdpater,对象,Fill,方法完成,DataSet,填充后,两者之间就没有连接了。当进行更新、删除等操作时,,DataAdpater,会自动建立连接,完成操作后再关闭连接。,DataAdapter,对象和数据库以及,DataSet,对象之间的关系如图,5-19,所示。,图,6-19,DataAdapter,对象和数据库以及,DataSet,对象关系图,DataAdapter,对象常用的属性和方法见表,6-20,表,6-20,DataAdapter,对象常用的属性和方法,属性,说明,DeleteCommand,用于读取或设置删除记录相关的,Transact-SQL,语句或存储过程,InsertCommand,用于读取或设置添加新记录相关的,Transact-SQL,语句或存储过程,IsClosed,用于读取指示数据读取器是否已关闭的值,SelectCommand,用于读取或设置查询记录的,Transact-SQL,语句或存储过程,TableMappings,用于读取提供源表和,DataTable,之间的主映射的集合,UpdateCommand,用于读取或设置更新记录的,Transact-SQL,语句或存储过程,Fill,在,DataSet,中添加或刷新行,匹配,DataSet,对象的行,Update,为,DataSet,中已插入、已更新或已删除的行调用相应的,INSERT,、,UPDATE,或,DELETE,语句,6.4.3.1,创建,DataAdapter,对象,1,先声明一个,DataAdapter,对象,然后将,DataAdapter,对象的,SelectCommand,属性设置为一个有效的,Command,对象。,2,创建,DataAdapter,对象时指定,Command,对象。,4,创建,DataAdapter,对象时指定,Select,语句或者存储过程和连接字符串。,3,创建,DataAdapter,对象时指定,Select,语句或者存储过程和,Connection,对象。,以下语句给出了四种创建,DataAdapter,对象的方式:,/,第一种方式,SqlDataAdapter,myadapter,= new,SqlDataAdapter,();,myadapter.SelectCommand,=,cmd,;,/,第二种方式,SqlDataAdapter,myadapter,= new,SqlDataAdapter(cmd,);,/,第三种方式,SqlDataAdapter,myadapter,= new,SqlDataAdapter(strSQL,cn,);,/,第四种方式,SqlDataAdapter,myadapter,=new,SqlDataAdapter(strSQL,strConn,);,6.4.3.2,使用,DataAdapter,对象,DataSet,对象,数据库,+,DataAdapter,对象,对数据库的操作主,要分为针对,填充,dataset,表,6-19,是使用,DataAdapter,对象填充,DataSet,,并绑定,GridView,控件的应用案例,,运用到了,DataAdapter,对象的,Fill,方法,操作步骤如下:,(,1,),(,2,),(,3,),启动,Visual Studio 2008,在菜单依次单击,【,文件,】,【,新建,】【,网站,】【ASP.NET,网站,】,;,在工具箱上拖曳或双击,DataView,至设计窗口;,在设计窗口页面上点右键,选择查看代码,,在,Page_load,事件输入表,6-21,代码;,表,6-21,使用,DataAdapter,填充,DataSet,程序代码及解释,程序代码,对应注释,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,using,System.Data.SqlClient,;,public partial class _5_08 :,System.Web.UI.Page,protected void,Page_Load(object,sender,EventArgs,e),SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,string,safeSql,= select * from book;,DataSet,ds,= new,DataSet,();,SqlCommand,cmd,= new,SqlCommand(safeSql,sqlconstr,);,SqlDataAdapter,da,= new,SqlDataAdapter(cmd,);,da.Fill(ds,);,this.GridView1.DataSource =,ds,;,GridView1.DataBind();,da.Dispose,();,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,创建,Connection,对象,设置,SQL,语句,创建,DataSet,对象,创建,Command,对象,创建,DataAdapter,对象,使用,DataAdapter,对象,填充,DataSet,对象,绑定,GridView,(,4,)按下,CTRL+F5,运行程序,得到如下程序界面:,图,6-21,使用,DataAdapter,对象读取数据实例,应用提醒,:,使用,DataAdapter,对象时,不需要使用,Connection,对象的,Open,方法,因为,DataAdapter,对象会自动连接数据库,提交查询,并关闭连接。如果已经打开数据库连接,则,DataAdapter,对象不会影响连接状态。,2,更新数据库。,DataAdapter,对象使用,Update,方法,(,1,)指定更改的,DataSet,对象,(,2,)指定更改的,DataSet,和,DataTable,对象,(,3,)指定更改的,DataTable,(,4,)指定更改的,DataRow,DataAdapter,对象调用,Update,方法时,它将根据每个记录的状态执行相应的,SQL,语句。由于,DataTable,中的,DataRow,对象能够记录每个记录的状态,,DataAdapter,对象将分析,DataTable,的分析每个记录,判断该记录是否更改。如果该记录已更改,则它将根据更改的内容使用,InsertCommand,、,UpdateCommand,或,DeleteCommand,产生相应的,SQL,语句,并更新到数据库。值得注意的是,在使用,Update,方法之前,必须设置相应的更新命令。,在程序,6-09.aspx,中,演示了如何设置,DataAdapter,的,UpdateCommand,来执行对已修改行的更新。,表,6-20,是设置,DataAdapter,的,UpdateCommand,来执行对已修改行的更新,并绑,定,GridView,控件的应用案例,运用到了,DataAdapter,对象的,Update,方法,操作步骤,如下:,(,1,)启动,Visual Studio 2008,在菜单依次单击,【,文件,】【,新建,】【,网站,】【ASP.NET,网站,】,;,(,2,)在工具箱上拖曳或双击,DataView,至设计窗口;,(,3,)在工具箱上拖曳,1,个,GridView,。右键点击,GridView,,选择显示智能标记,将,GridView,的数据列分别绑定,id,、,Title,、,Author,和,UnitPrice,,并将,HeaderText,属性修改为:编号、书名、作者、单价;添加,2,个,CommandField,,并分别将,ShowEditButton,设置为,True,。在工具箱上拖曳一个,Table,,将,Table,中放入,4,个标签,label1-label4,,,4,个文本框,textbox1-textbox4,,,2,个按钮,Button1,和,Button2,至设计窗口。将,label1-label4,相应的,Text,属性修改为编号、书名、作者、单价,,Button1,和,Button2,的,Text,属性修改为确定和取消;设计窗口如图,6-22,所示:,图,6-22,使用,DataAdapter,对象更新数据实例设计,(,4,)双击,Button1,,输入表,6-22,代码:,表,6-22,更新数据库程序代码及解释,程序代码,对应注释,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,protected void Button1_Click(object sender,EventArgs,e),int,id = Convert.ToInt32(IDTxt.Text);,ds.Tables0.DefaultView.Sort = Id ASC;,int,hid = ds.Tables0.DefaultView.Find(id);,DataRow,dr,= ds.Tables0.Rowshid;,dr.BeginEdit,();,drUnitPrice, =,Convert.ToDouble(UnitPriceTxt.Text,);,dr.EndEdit,();,SqlConnection,sqlconstr,= new,SqlConnection,();,sqlconstr.ConnectionString,= server=,localhost;database,=,MyBookShop;uid,=,sa;pwd,=;,string,UpdateSql,= update book set,UnitPrice,=,UnitPrice,where id =
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!