ASPNET数据库基本操作.ppt

上传人:小飞机 文档编号:5415886 上传时间:2023-07-05 格式:PPT 页数:57 大小:722KB
返回 下载 相关 举报
ASPNET数据库基本操作.ppt_第1页
第1页 / 共57页
ASPNET数据库基本操作.ppt_第2页
第2页 / 共57页
ASPNET数据库基本操作.ppt_第3页
第3页 / 共57页
ASPNET数据库基本操作.ppt_第4页
第4页 / 共57页
ASPNET数据库基本操作.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《ASPNET数据库基本操作.ppt》由会员分享,可在线阅读,更多相关《ASPNET数据库基本操作.ppt(57页珍藏版)》请在三一办公上搜索。

1、第6章 ADO.NET数据库编程,6,内容提要,本章首先介绍ADO.NET的结构。详细介绍ADO.NET的Connection对象,Command对象、DataReader对象、DataAdapter对象和DataSet对象。介绍常用的数据源控件和数据绑定控件。,网络数据库编程基础,在.NET框架中,包含了自己的数据访问技术ADO.NET。ADO.NET的名称起源于ADO(ActiveX Data Objects)。ADO.NET包含一组托管的类使得Web应用程序可以连接数据源、执行命令以及管理非连接的数据。ASP.NET同样使用服务器控件来进行数据处理。ASP.NET中提供两类数据控件。一类

2、是数据源(Data Source)控件。另一类是数据绑定(Data-bound)控件。,6.1 ADO.NET的结构,ADO.NET有两个核心组件:.NET数据提供程序和DataSet。,.NET数据提供程序,表6-1.NET数据提供程序的四个核心对象,SQL Server.NET 数据提供程序,对应SQL Server.NET的4个核心对象分别是:SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter。这4个对象包含在命名空间中,需要将这个命名空间引入到文件中。SQL Server.NET数据提供程序对SQL Server数据库的底层操作进

3、行了封装,可以更加快捷地访问SQL Server数据库。,OLE DB.NET 数据提供程序,对应OLE DB.NET的4个核心对象分别是:OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter。这4个对象包含在命名空间中,需要将这个命名空间引入到文件中。目前主要用来访问Access、Foxpro等简单的数据源。,Oracle DB.NET数据提供程序,对应Oracle DB.NET的4个核心对象分别是:OracleConnection、OracleCommand、OracleDataReader和OracleDataAdap

4、ter。这4个对象包含在命名空间中,需要将这个命名空间引入到文件中。,ODBC.NET数据提供程序,对应ODBC.NET的4个核心对象分别是:OdbcConnection、OdbcCommand、OdbcDataReader和OdbcDataAdapter。这4个对象包含在命名空间中,需要将这个命名空间引入到文件中。通过ODBC建立的数据源都可以通过ODBC.NET数据提供程序访问。,DataSet对象简介,DataSet是ADO.NET的核心组件,内部用XML描述数据,具有平台无关性。DataSet 包含一个或多个 DataTable对象的集合,这些对象由数据行和数据列以及 DataTabl

5、e 对象中数据的主键、外键、约束和关系信息等组成。DataSet通过DataAdapter对象从数据源得到数据,DataAdapter是连接DataSet和数据库的一个桥梁,因此命名为:“数据适配器”。,Connection对象,用于建立数据库连接,常用方法有Open()和Close()。Data Source属性用来获取数据源的服务器名或文件名;Provider属性用来指定数据库驱动程序;ConnectionString属性用来指定连接字符串。,案例名称:使用Connection对象 程序名称:6-01.aspxvoid Page_Load(Object sender,EventArgs e

6、)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();,使用Connection对象的构造函数,案例名称:使用Connection对象的构造函数程序名称:6-02.aspxvoid Page_Load(Object sender,EventArgs e)

7、OleDbConnection Conn;Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();,连接SQL Server数据库的常用参数,使用Connection对象连接SQL Server数据库,案例名称:使用Connection对象连接SQL Server数据库程序名称:6-03.aspxvoid Page_Load(Objec

8、t sender,EventArgs e)SqlConnection Conn;Conn=new SqlConnection(server=localhost;database=testdb;uid=sa;pwd=);/SQL Server身份验证/Conn=new SqlConnection(Data Source=ZXG;Integrated Security=true;Initial Catalog=testdb;);/Windows身份验证 Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();,Command对象,建立

9、数据连接以后,利用Command对象来执行命令并从数据源返回结果。常用方法:ExecuteReader()、ExecuteScalar()和ExecuteNonQuery()。Command对象常用的构造函数包括两个参数,1个是要执行的SQL语句,另一个是已经建立的Connnection对象,基本语法是:OleDbCommand Comm=new OleDbCommand(select*from grade,Conn);,ExecuteReader方法,主要用来执行基本SQL查询语句,要求SQL返回记录集。,案例名称:使用ExecuteRader方法程序名称:6-04.aspxvoid Pag

10、e_Load(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();OleDbCommand Comm=new OleDbCommand(select*from grade,Conn);OleDbDataReader dr=Comm.ExecuteReader();dg.DataSource=dr;

11、dg.DataBind();Conn.Close();,案例名称:使用Like子句实现模糊查询程序名称:6-05.aspx void submit_click(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();string sql=select*from grade;if(mytext.Text

12、!=)sql=select*from grade where 姓名 like%+mytext.Text+%;Message.Text=sql;OleDbCommand Comm=new OleDbCommand(sql,Conn);OleDbDataReader dr=Comm.ExecuteReader();dg.DataSource=dr;dg.DataBind();Conn.Close();请输入被查询的人名关键字,ExecuteScalar方法,该方法返回单个值,从相关的查询中返回第一行和第一列的值(Object 类型),一般用来执行聚合函数。,案例名称:使用ExecuteScalar

13、方法程序名称:6-06.aspxvoid Page_Load(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();String strSQL=select avg(数学)from grade;OleDbCommand Comm=new OleDbCommand(strSQL,Conn);Doubl

14、e d=(Double)Comm.ExecuteScalar();Message.Text=所有人数学的平均成绩为+d.ToString()+分;Conn.Close();,ExecuteNonQuery方法,用于执行不需要返回结果的命令,并返回受影响的行数。,案例名称:使用ExecuteNonQuery方法执行Insert语句程序名称:6-07.aspxvoid Page_Load(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Micros

15、oft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();String strSQL=insert into grade(学号,姓名,数学)+values(99,小张,100);OleDbCommand Comm=new OleDbCommand(strSQL,Conn);Comm.ExecuteNonQuery();Conn.Close();Response.Write(操作成功!);,ADO.NET事务处理,事务是一些事件的集合,执行一条SQL语句可理解成一个事件。ADO.NET使用Connection对象

16、的BeginTransaction()方法来声明事务开始,利用Transaction对象的Commit()方法来提交事务,利用Transaction对象的Rollback()方法来回滚事务。,使用事务的基本格式,案例名称:使用事务的基本格式 程序名称:6-08.aspxvoid Page_Load(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPa

17、th(person.mdb);Conn.Open();OleDbCommand Comm=new OleDbCommand();OleDbTransaction Trans;Trans=Conn.BeginTransaction();Comm.Connection=Conn;Comm.Transaction=Trans;try Comm.CommandText=UPDATE grade SET 数学=100 WHERE 姓名 LIKE%周%;Comm.ExecuteNonQuery();Comm.CommandText=UPDATE grade SET 数学=60 WHERE 姓名 LIKE%

18、张%;Comm.ExecuteNonQuery();Trans.Commit();Response.Write(事务执行成功!);catch(Exception ex)Trans.Rollback();Response.Write(出现错误,事务已经回滚!);finally Conn.Close();,DataReader对象,取DataReader对象的数据,有两种方法:1、通过和GridView等数据控件绑定,直接输出,使用方法如程序6-04.aspx。2、另一种方法是利用循环将其数据取出。,使用DataReader对象输出数据,案例名称:使用DataReader对象输出数据程序名称:6-

19、09.aspxprotected void Page_Load(object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();String strSQL=select*from grade;OleDbCommand Comm=new OleDbCommand(strSQL,Conn);OleDbDataReader dr=Comm.ExecuteRead

20、er();string html=;html+=;html+=学号;html+=姓名;html+=数学;html+=;try while(dr.Read()/读出每一条记录 html+=;html+=+dr学号.ToString()+;html+=+dr姓名.ToString()+;html+=+dr数学.ToString()+;html+=;html+=;catch(Exception ex)Response.Write(ex.Message);finally dr.Close();Conn.Close();/关闭链接 Response.Write(html);,DataAdapter对象,

21、DataAdapter对象用于从数据源中获取数据,填充DataSet 中的表和约束,并将对DataSet的更改提交回数据源。DataAdapter对象有4个重要属性,即SelectCommand、InsertCommand、UpdateCommand、DeleteCommand,都是Command对象,其中SelectCommand用来执行查询,其他三个用于执行数据操作。除了SelectCommand属性,其他三个属性都需使用“ExecuteNonQuery()”方法调用。,使用DataAdapter对象的构造方法,案例名称:使用DataAdapter对象构造方法程序名称:6-10.aspxp

22、rotected void Page_Load(Object sender,EventArgs e)OleDbConnection Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);string sql=select*from grade;Conn.Open();OleDbDataAdapter da=new OleDbDataAdapter(sql,Conn);/执行SQL DataSet ds=new DataSet();da.Fill(ds,

23、grade);/将da对象中的数据填充到ds对象中,并起别名“grade”dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn.Close();,使用DataAdapter对象的SelectCommand属性,案例名称:使用DataAdapter对象的SelectCommand属性程序名称:6-11.aspxvoid Page_Load(Object Src,EventArgs E)OleDbConnection Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;

24、+Data Source=+Server.MapPath(person.mdb);string strSQL=select*from grade;OleDbCommand Comm=new OleDbCommand(strSQL,Conn);OleDbDataAdapter da=new OleDbDataAdapter();da.SelectCommand=Comm;Conn.Open();DataSet ds=new DataSet();da.Fill(ds,grade);dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn

25、.Close();,案例名称:使用DataAdapter对象的InsertCommand属性 程序名称:6-12.aspxvoid Page_Load(Object Src,EventArgs E)OleDbConnection Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);string strInsertSQL=INSERT INTO grade(学号,姓名,数学)VALUES(111,盖茨,59);string strSelectSQL=S

26、ELECT*FROM grade WHERE 学号=111;string strUpdateSQL=UPDATE grade SET 数学=60 WHERE 学号=111;/创建Command对象 OleDbCommand InsertComm=new OleDbCommand(strInsertSQL,Conn);OleDbCommand SelectComm=new OleDbCommand(strSelectSQL,Conn);OleDbCommand UpdateComm=new OleDbCommand(strUpdateSQL,Conn);/创建DataAdapter对象da Ol

27、eDbDataAdapter da=new OleDbDataAdapter();Conn.Open();da.SelectCommand=SelectComm;da.UpdateCommand=UpdateComm;da.InsertCommand=InsertComm;/创建并填充DataSet DataSet ds=new DataSet();da.Fill(ds,grade1);da.InsertCommand.ExecuteNonQuery();da.Fill(ds,grade2);da.UpdateCommand.ExecuteNonQuery();da.Fill(ds,grade

28、3);/将DataSet绑定到GridView控件 dg1.DataSource=ds.Tablesgrade1.DefaultView;dg2.DataSource=ds.Tablesgrade2.DefaultView;dg3.DataSource=ds.Tablesgrade3.DefaultView;dg1.DataBind();dg2.DataBind();dg3.DataBind();Conn.Close();/关闭连接,DataSet对象,DataSet封装在命名空间“System.Data”中,它是从数据源中检索到的数据在内存中的缓存。DataSet中可以包含任意数量的Data

29、Table(表示内存中数据的一个表),且每个DataTable对应数据库中的相关数据表和视图。通过DataAdapter的Fill方法,将DataAdapter中SelectCommand的结果填充到DataSet对象中,而且可以填充多个表,利用别名来区分。比如“da.Fill(ds,grade1);”的功能是将da对象中的数据填充到ds对象中,并起别名“grade1”。,案例名称:自动生成DataSet对象程序名称:6-13.aspxvoid Page_Load(Object sender,EventArgs e)DataSet myds=new DataSet();DataTable my

30、dt=new DataTable(“Squares”);/创建一个DataTableDataRow mydr;mydt.Columns.Add(new DataColumn(数字,typeof(Int32);mydt.Columns.Add(new DataColumn(平方,typeof(Int32);for(int i=0;i,操作DataSet对象,案例名称:操作DataSet对象程序名称:6-14.aspxvoid Page_Load(Object Src,EventArgs E)OleDbConnection Conn=new OleDbConnection(Provider=Mic

31、rosoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);Conn.Open();string strSQL=select*from grade;OleDbDataAdapter da=new OleDbDataAdapter(strSQL,Conn);DataSet ds=new DataSet();da.Fill(ds,grade);DataTable dt=ds.Tablesgrade;DataRow row=dt.NewRow();row学号=199;row姓名=小布什;row数学=58;dt.Rows.Add(row)

32、;OleDbCommandBuilder cb=new OleDbCommandBuilder(da);/自动生成Adapter的Command命令。da.Update(ds,grade);/为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn.Close();,DataView对象,DataView对象定义了DataTable的数据查看方式,表示用于排序、筛选等的 DataTable 的可绑定数据的自定义视图。封

33、装在命名空间“Syste.Data”中。默认查看方式是将数据以表格的形式排列,且排列顺序遵从从数据库表中取出数据时的排列顺序,也可以通过DataView对象使数据按照某些规律显示。,使用DataView对象,案例名称:使用DataView对象程序名称:6-15.aspxvoid Page_Load(Object Src,EventArgs E)OleDbConnection Conn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+Data Source=+Server.MapPath(person.mdb);String strSQ

34、L=select*from grade;OleDbCommand Comm=new OleDbCommand(strSQL,Conn);OleDbDataAdapter da=new OleDbDataAdapter();da.SelectCommand=Comm;Conn.Open();DataSet ds=new DataSet();da.Fill(ds,grade);DataView dv=new DataView(ds.Tablesgrade);dv.RowFilter=数学 60;dv.Sort=学号 DESC,数学 DESC;Response.Write(满足条件的记录有:+dv.

35、Count+条);dg.DataSource=dv;dg.DataBind();Conn.Close();,DataSet和DataReader的选择,在决定应用程序应使用DataReader还是使用DataSet时,应考虑应用程序所需的功能类型。DataSet用于执行以下功能:在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader是更好的选择。从XML Web服务对数据进行远程处理。与数据进行动态交互,对数据进行排序、筛选或组合并关联来自多个源的数据。对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。,6.2

36、数据源控件,数据源控件是一组.NET框架类,便于数据存储和数据绑定控件之间的双向绑定。ASP.NET包含几种类型的数据源控件,这些数据源控件可以从不同的数据源检索数据,并将其提供给数据绑定控件。数据源控件没有呈现形式,即在运行时是不可见的,而是用来表示特定的后端数据存储。,内置的数据源控件,连接到数据库,在连接到数据库时,需要指定数据源控件的几个属性。最重要的就是控件的ID以及“runat=“server”。另外,还要指明位于哪个服务器上的哪个数据库以及登录该服务器的用户名和密码。这些属性都包含在连接字符串中。ASP.NET的数据库编程虽然看上去比较复杂,不过通过开发环境中的数据库向导,可以很

37、容易地完成网络数据库的连接和数据显示。例:SqlDataSource.aspx,6.3 数据绑定控件,“数据绑定”的意思是将控件与存储在数据源中的信息绑定在一起。数据绑定控件把数据源提供的数据作为标记,发给请求的客户端浏览器,然后将数据呈现在浏览器页面上。ASP.NET服务器控件有些可以作为数据绑定控件来使用。这种绑定可以通过修改该控件的DataSourceID属性使之连接到数据源控件上。,数据绑定概述,ListControl类控件,与数据库数据显示有关的属性主要包括:AppendDataBoundItem、DataSourceID、DataSource、DataTextField、DataV

38、alueField。AppendDataBoundItem用于将数据绑定项追加到静态声明的列表项上;DataTextField绑定的字段用于显示列表项;DataValueField绑定的字段用于设置列表项的值。,例:DropDownList控件数据绑定,在DropDownList中将显示tb_Admin表的AdminName字段值,而列表项的值对应AdminID字段值。源程序:DropDownListSqlDS.aspx,ASP.NET数据绑定控件,主要包括:GridViewDetailsViewFormViewListViewRepeater和DataList是1.1版就提供的控件,内置功能

39、较弱,需要自己实现分页、排序、数据事件等功能。,GridView控件,GridView控件用于显示二维表格形式的数据,支持以下功能:绑定到数据源控件内置排序功能内置更新和删除功能内置分页功能内置行选择功能对GridView对象模型进行编程访问以动态设置属性和处理事件诸如CheckBoxField和ImageField等新的列类型用于选择、更新和删除的多个数据键字段可通过主题和样式自定义外观,GridView控件的列字段类型,TemplateField模板对应表,GridView控件应用举例,对GridView中的数据进行分页和排序利用GridView控件编辑、删除数据自定义超链接列自定义图像列

40、显示主从表,对GridView中的数据进行分页和排序,要实现分页功能需要设置属性AllowPaging的值为True。要实现排序功能需要设置属性AllowSorting的值为True。例:GridView_sort.aspx,利用GridView控件编辑、删除数据,“启用编辑”和“启用删除”,可提供编辑和删除数据功能。绑定至GridView的数据源控件也要提供更新、删除功能。表的主键不能被编辑,GridView的属性DataKeyNames包含了表的主键信息。例:GridView_link.aspx,自定义超链接列,HyperLinkField列的属性DataNavigateUrlFields

41、对应页面显示到超链接的NavigateUrl属性;属性DataNavigateUrlFormatString确定目标URL的格式,其中0在网页浏览时会被DataNavigateUrlFields对应的字段值代替;例:GridView_img.aspx?aaa=0属性DataTextField对应页面显示到超链接的Text属性。,自定义图像列,表字段存储了对应图片的路径,要在GridView中显示图片,只需设置ImageField列的DataImageUrlField属性;若在存储时仅存储图片的文件名,则还需配合使用属性DataImageUrlFormatString;例如,假设图片统一存放在网

42、站根路径下的img文件夹中,字段Image存储图片的文件名,则设置如下:,显示主从表,在同一页显示主从表当单击“选择”按钮时,GridView.SelectedValue返回选择行所对应的主键值,再将该值传递给另一数据源控件中查询语句的参数。在不同页显示主从表当单击主表网页中的链接时,相应的查询字符串传递到从表网页,再获取其中的值赋给where表达式的参数。例:GridView_link.aspxGridView_img.aspx,DetailsView控件,当生成主/详细视图时,经常需要显示单条记录的内容。通常,用户从网格中选择一条主记录,让应用程序追溯所有可用字段。DetailsView控

43、件在表格中显示数据源的单个记录,此表格中每个数据行表示记录中的一个字段。此控件经常在主控/详细方案中与GridView控件一起使用。例:DetailsView.aspx,FormView控件,FormView使用起来像是DetailsView的模板化版本。与DetailsView控件不同的是,FormView不使用数据控件字段,而是允许用户通过模板定义每个项目的显示。FormView和DetailsView有两方面的功能差异:FormView控件具有ItemTemplate、EditItemTemplate和InsertItemTemplate属性,而DetailsView控件没有这些属性Fo

44、rmView不提供内置插入、更新和删除等功能,FormView控件的模板,例:FormView.aspx,数据绑定方法,数据绑定表达式必须包含在字符之间;绑定到数据源的常用数据绑定表达式包括:,封装在命名空间“”中:用于单向(只读)绑定 ASP.NET 2.0新出现的一个方法,和DataBinder.Eval()等价。:用于双向(可更新)绑定如果数据绑定表达式是Eval(“字段名”),那么必须把放在像Repeater、DataList、GridView等控件的模板中。,Repeater数据控件,Repeater控件的主要功能是以更自由的方式来控制数据,用非表格的形式来展现数据。Repeater

45、 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repeater 控件提供布局。Repeater控件最关键的部分是模板,允许用户定义5种模板:ItemTemplate,数据模板,针对每条记录显示一行输出,这是Repeater控件必须的AlternatingItemTemplate,隔行数据模板,可选参数SeparatorTemplate,分割线模板,可选参数HeaderTemplate,抬头模板,可选参数FooterTemplate,结尾模板,可选参数例6-17.aspx、6-18.aspx,DataList数据控件,DataList数据控件在Repeater数据控件基础上进行了扩展

46、,除了含有Repeater的功能外,还可以设置单行显示数量等。可以使用模板通过包括 HTML文本和控件来定义数据项的布局。例如,可以在某项中使用Label Web 服务器控件来显示数据源中的字段等。DataList控件和Repeater控件的数据输出格式都取决于模板的定义,不同点是:DataList在浏览器中会以表格的形式输出。例6-19.aspx、6-20.aspx,小结,本章介绍了框架类中ADO.NET的结构,理解ADO.NET的组成以及4种.NET数据提供程序的用法。熟练掌握DataSet对象的使用方法。掌握DataReader对象、DataAdapter对象的概念以及使用方法。掌握GridView、DetailsView、Repeater和DataList等数据控件的使用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号