ASPNET数据库基本操作.ppt_第1页
ASPNET数据库基本操作.ppt_第2页
ASPNET数据库基本操作.ppt_第3页
ASPNET数据库基本操作.ppt_第4页
ASPNET数据库基本操作.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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中提供两类数据控件。一类是数据源(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个对象包含在System.Data.SqlClient命名空间中,需要将这个命名空间引入到文件中。 SQL Server.NET数据提供程序对SQL Server数据库的底层操作进行了封装,可以更加快捷地访问SQL Server数据库。,OLE DB .NET 数据提供程序,对应OLE DB .NET的4个核心对象分别是:OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter。这4个对象包含在System.Data.OleDb命名空间中,需要将这个命名空间引入到文件中。 目前主要用来访问Access、Foxpro等简单的数据源。,Oracle DB .NET数据提供程序,对应Oracle DB .NET的4个核心对象分别是:OracleConnection、OracleCommand、OracleDataReader和OracleDataAdapter。 这4个对象包含在System.Data.OracleClient命名空间中,需要将这个命名空间引入到文件中。,ODBC.NET数据提供程序,对应ODBC .NET的4个核心对象分别是:OdbcConnection、OdbcCommand、OdbcDataReader和OdbcDataAdapter。这4个对象包含在System.Data.Odbc命名空间中,需要将这个命名空间引入到文件中。 通过ODBC建立的数据源都可以通过ODBC.NET数据提供程序访问。,DataSet对象简介,DataSet是ADO.NET的核心组件,内部用XML描述数据,具有平台无关性。 DataSet 包含一个或多个 DataTable对象的集合,这些对象由数据行和数据列以及 DataTable 对象中数据的主键、外键、约束和关系信息等组成。 DataSet通过DataAdapter对象从数据源得到数据,DataAdapter是连接DataSet和数据库的一个桥梁,因此命名为:“数据适配器”。,Connection对象,用于建立数据库连接,常用方法有Open()和Close()。Data Source属性用来获取数据源的服务器名或文件名;Provider属性用来指定数据库驱动程序;ConnectionString属性用来指定连接字符串。,案例名称:使用Connection对象 程序名称:6-01.aspx void 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(); Message.Text=Conn.State.ToString(); Conn.Close(); ,使用Connection对象的构造函数,案例名称:使用Connection对象的构造函数 程序名称:6-02.aspx void Page_Load(Object sender, EventArgs e) 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.aspx void Page_Load(Object 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对象,建立数据连接以后,利用Command对象来执行命令并从数据源返回结果。 常用方法: ExecuteReader()、 ExecuteScalar() 和ExecuteNonQuery()。 Command对象常用的构造函数包括两个参数,1个是要执行的SQL语句,另一个是已经建立的Connnection对象,基本语法是: OleDbCommand Comm=new OleDbCommand(“select * from grade“,Conn);,ExecuteReader方法,主要用来执行基本SQL查询语句,要求SQL返回记录集。,案例名称:使用ExecuteRader方法 程序名称:6-04.aspx void 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(); OleDbCommand Comm=new OleDbCommand(“select * from grade“,Conn); OleDbDataReader dr=Comm.ExecuteReader(); dg.DataSource=dr; 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!=“) 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方法 程序名称:6-06.aspx void 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); Double d=(Double)Comm.ExecuteScalar(); Message.Text=“所有人数学的平均成绩为“+d.ToString()+“分“; Conn.Close(); ,ExecuteNonQuery方法,用于执行不需要返回结果的命令,并返回受影响的行数。,案例名称:使用ExecuteNonQuery方法执行Insert语句 程序名称:6-07.aspx void 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=“insert into grade (学号,姓名,数学) “+ “values (99,小张,100)“; OleDbCommand Comm=new OleDbCommand(strSQL,Conn); Comm.ExecuteNonQuery(); Conn.Close(); Response.Write(“操作成功!“); ,ADO.NET事务处理,事务是一些事件的集合,执行一条SQL语句可理解成一个事件。 ADO.NET使用Connection对象的BeginTransaction()方法来声明事务开始,利用Transaction对象的Commit()方法来提交事务,利用Transaction对象的Rollback()方法来回滚事务。,使用事务的基本格式,案例名称:使用事务的基本格式 程序名称:6-08.aspx void 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(); 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 %张%“; 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-09.aspx protected 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.ExecuteReader(); 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对象,DataAdapter对象用于从数据源中获取数据,填充DataSet 中的表和约束,并将对DataSet的更改提交回数据源。 DataAdapter对象有4个重要属性,即SelectCommand、InsertCommand、UpdateCommand、DeleteCommand,都是Command对象,其中SelectCommand用来执行查询,其他三个用于执行数据操作。 除了SelectCommand属性,其他三个属性都需使用“ExecuteNonQuery()”方法调用。,使用DataAdapter对象的构造方法,案例名称:使用DataAdapter对象构造方法 程序名称:6-10.aspx protected 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, “grade“); /将da对象中的数据填充到ds对象中,并起别名“grade” dg.DataSource=ds.Tables“grade“.DefaultView; dg.DataBind(); Conn.Close(); ,使用DataAdapter对象的SelectCommand属性,案例名称:使用DataAdapter对象的SelectCommand属性 程序名称:6-11.aspx void Page_Load(Object Src, EventArgs E) OleDbConnection Conn=new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;“+ “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.Tables“grade“.DefaultView; dg.DataBind(); Conn.Close(); ,案例名称:使用DataAdapter对象的InsertCommand属性 程序名称:6-12.aspx void 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 = “SELECT * 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 OleDbDataAdapter 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,“grade3“); / 将DataSet绑定到GridView控件 dg1.DataSource=ds.Tables“grade1“.DefaultView; dg2.DataSource=ds.Tables“grade2“.DefaultView; dg3.DataSource=ds.Tables“grade3“.DefaultView; dg1.DataBind(); dg2.DataBind(); dg3.DataBind(); Conn.Close(); / 关闭连接 ,DataSet对象,DataSet封装在命名空间“System.Data”中,它是从数据源中检索到的数据在内存中的缓存。DataSet中可以包含任意数量的DataTable(表示内存中数据的一个表),且每个DataTable对应数据库中的相关数据表和视图。 通过DataAdapter的Fill方法,将DataAdapter中SelectCommand的结果填充到DataSet对象中,而且可以填充多个表,利用别名来区分。比如“da.Fill(ds,“grade1“);”的功能是将da对象中的数据填充到ds对象中,并起别名“grade1” 。,案例名称:自动生成DataSet对象 程序名称:6-13.aspx void Page_Load(Object sender, EventArgs e) DataSet myds = new DataSet(); DataTable mydt = new DataTable(“Squares”);/创建一个DataTable DataRow mydr; mydt.Columns.Add(new DataColumn(“数字“,typeof(Int32); mydt.Columns.Add(new DataColumn(“平方“,typeof(Int32); for (int i = 0; i ,操作DataSet对象,案例名称:操作DataSet对象 程序名称:6-14.aspx void Page_Load(Object Src, 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;“; OleDbDataAdapter da=new OleDbDataAdapter(strSQL, Conn); DataSet ds = new DataSet(); da.Fill(ds,“grade“); DataTable dt = ds.Tables“grade“; DataRow row = dt.NewRow(); row“学号“ = “199“; row“姓名“ = “小布什“; row“数学“ = 58; dt.Rows.Add(row); OleDbCommandBuilder cb = new OleDbCommandBuilder(da); /自动生成Adapter的Command命令。 da.Update(ds,“grade“);/为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。 dg.DataSource = ds.Tables“grade“.DefaultView; dg.DataBind(); Conn.Close(); ,DataView对象,DataView对象定义了DataTable的数据查看方式,表示用于排序、筛选等的 DataTable 的可绑定数据的自定义视图。封装在命名空间“Syste.Data”中。 默认查看方式是将数据以表格的形式排列,且排列顺序遵从从数据库表中取出数据时的排列顺序,也可以通过DataView对象使数据按照某些规律显示。,使用DataView对象,案例名称:使用DataView对象 程序名称:6-15.aspx void Page_Load(Object Src, EventArgs E) OleDbConnection Conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;“+ “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“); DataView dv = new DataView(ds.Tables“grade“); dv.RowFilter = “ 数学 60“; dv.Sort = “学号 DESC, 数学 DESC“; Response.Write(“满足条件的记录有:“ + dv.Count + “条“); dg.DataSource = dv; dg.DataBind(); Conn.Close(); ,DataSet和DataReader的选择,在决定应用程序应使用DataReader还是使用DataSet时,应考虑应用程序所需的功能类型。DataSet用于执行以下功能: 在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader是更好的选择。 从XML Web服务对数据进行远程处理。 与数据进行动态交互,对数据进行排序、筛选或组合并关联来自多个源的数据。 对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。,6.2 数据源控件,数据源控件是一组.NET框架类,便于数据存储和数据绑定控件之间的双向绑定。 ASP.NET包含几种类型的数据源控件,这些数据源控件可以从不同的数据源检索数据,并将其提供给数据绑定控件。 数据源控件没有呈现形式,即在运行时是不可见的,而是用来表示特定的后端数据存储。,内置的数据源控件,连接到数据库,在连接到数据库时,需要指定数据源控件的几个属性。最重要的就是控件的ID以及“runat = “server”。另外,还要指明位于哪个服务器上的哪个数据库以及登录该服务器的用户名和密码。这些属性都包含在连接字符串中。 ASP.NET的数据库编程虽然看上去比较复杂,不过通过开发环境中的数据库向导,可以很容易地完成网络数据库的连接和数据显示。 例:SqlDataSource.aspx,6.3 数据绑定控件,“数据绑定”的意思是将控件与存储在数据源中的信息绑定在一起。 数据绑定控件把数据源提供的数据作为标记,发给请求的客户端浏览器,然后将数据呈现在浏览器页面上。 ASP.NET服务器控件有些可以作为数据绑定控件来使用。这种绑定可以通过修改该控件的DataSourceID属性使之连接到数据源控件上。,数据绑定概述,ListControl类控件,与数据库数据显示有关的属性主要包括:AppendDataBoundItem、DataSourceID、DataSource、DataTextField、DataValueField。 AppendDataBoundItem用于将数据绑定项追加到静态声明的列表项上; DataTextField绑定的字段用于显示列表项; DataValueField绑定的字段用于设置列表项的值。,例:DropDownList控件数据绑定,在DropDownList中将显示tb_Admin表的AdminName字段值,而列表项的值对应AdminID字段值。 源程序:DropDownListSqlDS.aspx,ASP.NET数据绑定控件,主要包括: GridView DetailsView FormView ListView Repeater和DataList是1.1版就提供的控件,内置功能较弱,需要自己实现分页、排序、数据事件等功能。,GridView控件,GridView控件用于显示二维表格形式的数据,支持以下功能: 绑定到数据源控件 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 对GridView对象模型进行编程访问以动态设置属性和处理事件 诸如CheckBoxField和ImageField等新的列类型 用于选择、更新和删除的多个数据键字段 可通过主题和样式自定义外观,GridView控件的列字段类型,TemplateField模板对应表,GridView控件应用举例,对GridView中的数据进行分页和排序 利用GridView控件编辑、删除数据 自定义超链接列 自定义图像列 显示主从表,对GridView中的数据进行分页和排序,要实现分页功能需要设置属性AllowPaging的值为True。 要实现排序功能需要设置属性AllowSorting的值为True。 例:GridView_sort.aspx,利用GridView控件编辑、删除数据,“启用编辑”和“启用删除”,可提供编辑和删除数据功能。 绑定至GridView的数据源控件也要提供更新、删除功能。 表的主键不能被编辑,GridView的属性DataKeyNames包含了表的主键信息。 例:GridView_link.aspx,自定义超链接列,HyperLinkField列的属性DataNavigateUrlFields对应页面显示到超链接的NavigateUrl属性; 属性DataNavigateUrlFormatString确定目标URL的格式,其中0在网页浏览时会被DataNavigateUrlFields对应的字段值代替; 例:GridView_img.aspx?aaa=0 属性DataTextField对应页面显示到超链接的Text属性。,自定义图像列,表字段存储了对应图片的路径,要在GridView中显示图片,只需设置ImageField列的DataImageUrlField属性; 若在存储时仅存储图片的文件名,则还需配合使用属性DataImageUrlFormatString; 例如,假设图片统一存放在网站根路径下的img文件夹中,字段Image存储图片的文件名,则设置如下: ,显示主从表,在同一页显示主从表 当单击“选择” 按钮时,GridView.SelectedValue返回选择行所对应的主键值,再将该值传递给另一数据源控件中查询语句的参数。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论