《ADONET数据库访问技术.ppt》由会员分享,可在线阅读,更多相关《ADONET数据库访问技术.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第第第1 1 1 1页页页页1第三单元:第三单元:第三单元:第三单元:网络数据库技术网络数据库技术第一部分第一部分第一部分第一部分 数据库访问技术数据库访问技术数据库访问技术数据库访问技术数据库访问技术数据库访问技术数据库访问技术数据库访问技术第第第第2 2 2 2页页页页2本部分重点、难点本部分重点、难点理解对象模型定义。理解对象模型定义。掌握掌握SqlConnection对象与对象与Command对象。对象。掌握掌握DataReader、DataSet、DataTable、DataAdapter及及DataView对象。对象。掌握连接与操作掌握连接与操作Sql Server数据库的方法。
2、数据库的方法。掌握中使用掌握中使用XML文件的方法。文件的方法。第第第第3 3 3 3页页页页3基本概念基本概念是是.NET Framework用于访问数据的组件。用于访问数据的组件。通过操作数据库。如图:通过操作数据库。如图:的一个优点是可以的一个优点是可以离线操作数据库离线操作数据库,应用程序只要在需要取,应用程序只要在需要取得数据或更新数据的时候猜对数据源进行联机,所以可以得数据或更新数据的时候猜对数据源进行联机,所以可以减减少应用程序对服务器资源的占用少应用程序对服务器资源的占用,提高应用程序的效率。,提高应用程序的效率。ASP.NETASP.NETADO.NETADO.NET数据库数
3、据库数据库数据库第第第第4 4 4 4页页页页4对象模型对象模型.NET Framework针对不同的数据库,设计了下面四种数据针对不同的数据库,设计了下面四种数据提供程序:提供程序:(1)SQL Server.NET Framework数据提供程序数据提供程序 (2)OLE DB.NET Framework数据提供程序数据提供程序 (3)ODBC.NET Framework数据提供程序数据提供程序 (4)Oracle.NET Framework数据提供程序数据提供程序第第第第5 5 5 5页页页页5对象模型对象模型第第第第6 6 6 6页页页页6(1)SQLConnection 建立与特定数
4、据源的连接建立与特定数据源的连接属性说明Data Source设置要连接的设置要连接的SQL SERVER服务器名称或服务器名称或IPServerDatabase要连接的数据库要连接的数据库Initial catalogIntegrated Secrity指定是否使用信任连接指定是否使用信任连接Trusted _ ConnectionUser ID登陆数据库的账号登陆数据库的账号UidPassword登陆数据库的密码登陆数据库的密码pwdConnection Timeout连接超时连接超时第第第第7 7 7 7页页页页7SQL SERVER数据库的两种连接模式数据库的两种连接模式1、混合模式连
5、接、混合模式连接使用此种连接模式必须输入登录名和登陆口令。使用此种连接模式必须输入登录名和登陆口令。例如:例如:string myconnection=server=(local);database=news;uid=sa;pwd=sa;SqlConnection conn=new SqlConnection(myconnection);第第第第8 8 8 8页页页页82、windows模式连接模式连接以以windows连接模式必须将连接模式必须将trusted_connection=truestring myconnection=server=(local);database=news;tr
6、usted_connection=true;SqlConnection conn=new SqlConnection(myconnection);第第第第9 9 9 9页页页页9(2)Command 对数据源执行命令对数据源执行命令属性说明CommandType CommandType属性可以用来指定属性可以用来指定CommandText属性中属性中的内容是的内容是SQL语句、数据表名称还是存储过程。语句、数据表名称还是存储过程。CommandType.TableDirect 数据表名称数据表名称 CommandType.Text SQL语句语句 CommandType.StoredProce
7、dure 存储过程名称存储过程名称默认为:默认为:CommandType.TextCommandText由由CommandText属性设置,表示内容是属性设置,表示内容是SQL语句、数据表语句、数据表名称或存储过程名称或存储过程CommandTimeout指令超时时间,默认为指令超时时间,默认为30s第第第第10101010页页页页10Command对象方法对象方法方法描述ExecuteReader执行执行CommandText属性所规定的操作,并创建属性所规定的操作,并创建DataReader对象对象ExecuteNonQuery执行执行CommandText属性所规定的操作,一般为属性所规
8、定的操作,一般为update、insert、delete及其他没有返回值的及其他没有返回值的SQL命命令,返回受影响的行数。令,返回受影响的行数。ExecuteScalar执行执行CommandText属性所规定的操作,返回执行结属性所规定的操作,返回执行结果中的首行首列的值。如结果集多于一行一列,它将果中的首行首列的值。如结果集多于一行一列,它将忽略其余部分。忽略其余部分。一般用于执行一般用于执行max、min、Count、sun之类的结果。之类的结果。第第第第11111111页页页页11使用方法使用方法string myconnection=server=.;database=news;u
9、id=sa;pwd=sa;SqlConnection conn=new SqlConnection(myconnection);SqlCommand cmd=new SqlCommand();cmd.CommandType=CommandType.Text;cmd.CommandText=select 新闻标题新闻标题,发布日期发布日期 from News;cmd.Connection=conn;conn.Open();第第第第12121212页页页页12综合实例(一)查询数据综合实例(一)查询数据 protected void Page_Load(object sender,EventArg
10、s e)string connection=server=.;database=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);string command=select*from news;SqlCommand cmd=new SqlCommand(command,conn);conn.Open();SqlDataReader dr=cmd.ExecuteReader();this.GridView1.DataSource=dr;this.GridView1.DataBind();dr.Close
11、();conn.Close();第第第第13131313页页页页13(3)DataReader从数据源中读取只进且只读的数据流从数据源中读取只进且只读的数据流.当我们只需要按顺序读取数据而不需要其他操作时,可以使当我们只需要按顺序读取数据而不需要其他操作时,可以使用用DataReader对象。对象。DataReader类是抽象类,因此不能直接实例化,而是通过执类是抽象类,因此不能直接实例化,而是通过执行行Command对象的对象的ExecuteReader方法返回方法返回DataReader实例。实例。第第第第14141414页页页页14(4)DataBindDataBind方法表示绑定数据方
12、法表示绑定数据第第第第15151515页页页页15综合实例(综合实例(2)增加数据)增加数据string connection=server=.;database=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);string command=insert into news(新闻标题新闻标题,新闻内容新闻内容,作者作者,新闻分类基新闻分类基础基础基础基础基础基础基础础基础基础基础基础基础基础,WEIWEI,IT技术技术);SqlCommand cmd=new SqlCommand(command,c
13、onn);conn.Open();cmd.ExecuteNonQuery();conn.Close();Response.Write(alert(数据插入成功!数据插入成功!);第第第第16161616页页页页16(5)ExecuteNonQuery该方法执行该方法执行Command属性中所规定增删改的属性中所规定增删改的SQL语句。语句。第第第第17171717页页页页17综合实例(综合实例(3)修改数据)修改数据protected void Page_Load(object sender,EventArgs e)string connection=server=.;database=new
14、s;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);string command=update news set 新闻标题实例教程新闻标题实例教程 where 新新闻标题基础闻标题基础;SqlCommand cmd=new SqlCommand(command,conn);conn.Open();cmd.ExecuteNonQuery();conn.Close();Response.Write(alert(数据修改成数据修改成功功!);第第第第18181818页页页页18综合实例(综合实例(4)删除数据)删除
15、数据 protected void Page_Load(object sender,EventArgs e)string connection=server=.;database=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);string command=delete from news where 新闻标题实例教程新闻标题实例教程;SqlCommand cmd=new SqlCommand(command,conn);conn.Open();cmd.ExecuteNonQuery();conn.
16、Close();Response.Write(alert(数据删除成功数据删除成功!);第第第第19191919页页页页19(6)ExecuteScalar方法方法ExecuteScalar方法返回执行结果中首行首列的值,该方法方法返回执行结果中首行首列的值,该方法只能执行只能执行Select语句,一般用于取得最大值语句,一般用于取得最大值(Max)、最小值、最小值(Min)、平均值、平均值(Avg)、记录数、记录数(Conut)第第第第20202020页页页页20综合实例(综合实例(4)ExecuteScalar方法方法protected void Page_Load(object send
17、er,EventArgs e)string connection=server=.;database=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);conn.Open();SqlCommand cmd=new SqlCommand(select count(*)from news,conn);string count=cmd.ExecuteScalar().ToString();this.Label1.Text=+count+;第第第第21212121页页页页21执行带参数的执行带参数的comma
18、ndprotected void Button1_Click(object sender,EventArgs e)string connection=server=.;database=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);SqlCommand cmd=new SqlCommand(select*from news where 新闻标题新闻标题=ttitle,conn);cmd.Parameters.Add(ttitle,SqlDbType.VarChar).Value=this.Text
19、Box1.Text;conn.Open();SqlDataReader sdr=cmd.ExecuteReader();this.GridView1.DataSource=sdr;GridView1.DataBind();sdr.Close();conn.Close();第第第第22222222页页页页22(7)DataReader对象对象当我们需要按顺序读取数据而不需要其他操作时,可以使用当我们需要按顺序读取数据而不需要其他操作时,可以使用DataReader对象。对象。DataReader对象一次读取一条记录,而且这些数据是只读的,对象一次读取一条记录,而且这些数据是只读的,并不允许做其他
20、操作,所以使用并不允许做其他操作,所以使用DataReader不但节省资源而不但节省资源而且效率很高。且效率很高。DataReader类是抽象的类,因此不能直接实例化,而是通过类是抽象的类,因此不能直接实例化,而是通过执行执行Command对象的对象的ExecuteReader方法返回方法返回DataReader实例。实例。第第第第23232323页页页页23DataReader综合实例综合实例protected void Page_Load(object sender,EventArgs e)string connection=server=.;database=news;uid=sa;pw
21、d=123456;SqlConnection conn=new SqlConnection(connection);string command=select username,password from users;SqlCommand cmd=new SqlCommand(command,conn);conn.Open();SqlDataReader sdr=cmd.ExecuteReader();while(sdr.Read()/read表示让表示让DataReader对象读取下一条记录,如果读到数对象读取下一条记录,如果读到数据则返回据则返回true,若没有读到数据就返回,若没有读到数
22、据就返回false Response.Write(sdrusername+ );Response.Write(sdrpassword+);sdr.Close();conn.Close();第第第第24242424页页页页24(8)DataSet对象对象DataSet对象可以视为一个内存数据库,由许多表对象可以视为一个内存数据库,由许多表(DataTable)数据表关系数据表关系(Relation)、约束、约束(Constraint)、记、记录录(DataRow)以及字段以及字段(DataColumn)对象的集合组成的。对象的集合组成的。DataSet对象的结构也与数据库类
23、似,对象的结构也与数据库类似,DataSet对象由一个或对象由一个或多个多个DataTable组成,组成,DataTable相当于数据库中的表;有列相当于数据库中的表;有列DataColumn与行与行DataRow,分别对应数据库的字段与记录。,分别对应数据库的字段与记录。第第第第25252525页页页页25DataSet对象对象DataSet对象一个重要的特性是离线操作,即从数据库中取对象一个重要的特性是离线操作,即从数据库中取回数据,存到回数据,存到DataSet对象中后,程序可以马上断开与数据对象中后,程序可以马上断开与数据库的连接,用户可以对内存中库的连接,用户可以对内存中DataSe
24、t对象中的数据进行增对象中的数据进行增删改;而当要把改动反映到数据库时,只要重新与数据库建删改;而当要把改动反映到数据库时,只要重新与数据库建立连接,并利用相应命令实现更新立连接,并利用相应命令实现更新第第第第26262626页页页页26DataSet数据库Datatable表DataColumn列DataRow行Constraint约束DataRelation数据关系集第第第第27272727页页页页27DataSet对象实例对象实例protected void Page_Load(object sender,EventArgs e)string connection=server=.;da
25、tabase=news;uid=sa;pwd=123456;SqlConnection conn=new SqlConnection(connection);SqlDataAdapter da=new SqlDataAdapter(select*from users,conn);DataSet ds=new DataSet();da.Fill(ds,users);this.GridView1.DataSource=ds.Tables0;GridView1.DataBind();第第第第28282828页页页页28(9)DataAdapter调用调用DataAdapter的的Fill方法时,如果
26、方法时,如果connection没有打开,没有打开,DataAdapter会自动调用会自动调用Connection对象的对象的open方法;执方法;执行完毕后会自动将行完毕后会自动将Connection对象关闭。对象关闭。如果在执行如果在执行Fill方法时,方法时,Connection对象已经打开,那么执对象已经打开,那么执行完毕后行完毕后DataAdapter会维持会维持Connection对象打开状态。对象打开状态。第第第第29292929页页页页2929使用使用 ODBC.NET Data Provider 使用使用 OLE DB.NET Data Provider 访问访问 MySql
27、 1.3 ASP.NET 1.3 ASP.NET 1.3 ASP.NET 1.3 ASP.NET 访问其他数据源访问其他数据源访问其他数据源访问其他数据源第第第第30303030页页页页3030ODBC.NET Data Provider ODBC.NET Data Provider 简介简介 ODBCODBC(Open Database ConnectionOpen Database Connection,开放式数据互连)是访问数据库,开放式数据互连)是访问数据库的一个统一的接口标准,它允许开发人员使用的一个统一的接口标准,它允许开发人员使用 ODBC APIODBC API(应用程序(应用
28、程序接口)来访问多种不同的数据源,并执行数据操作。接口)来访问多种不同的数据源,并执行数据操作。当使用应用程序时,应用程序首先通过使用当使用应用程序时,应用程序首先通过使用 ODBC API ODBC API 与驱动管理器与驱动管理器进行通信。进行通信。ODBC API ODBC API 由一组由一组 ODBC ODBC 函数调用组成,通过函数调用组成,通过 API API 调用调用 ODBC ODBC 函数提函数提交交 SQL SQL 请求,然后驱动管理器通过分析请求,然后驱动管理器通过分析 ODBC ODBC 函数并判断数据源的函数并判断数据源的类型。类型。驱动管理器会配置正确的驱动器,然
29、后将驱动管理器会配置正确的驱动器,然后将 ODBC ODBC 函数调用传递给驱动函数调用传递给驱动器。最后,驱动器处理器。最后,驱动器处理 ODBC ODBC 函数调用,把函数调用,把 SQL SQL 请求发送给数据源,请求发送给数据源,数据源执行相应操作后,驱动器返回执行结果,管理器再吧执行结果数据源执行相应操作后,驱动器返回执行结果,管理器再吧执行结果返回给应用程序。返回给应用程序。第第第第31313131页页页页3131使用命名空间使用命名空间 System.Data.Odbc 才能够使用才能够使用 ODBC.NET Data Provider 来访问来访问 ODBC 数据源。通过数据源
30、。通过 ODBC 能够连接和执行数据操作,能够连接和执行数据操作,其访问方式和其访问方式和 SQL Server.NET Data Provider 相似,都需要先与数据相似,都需要先与数据源建立连接并打开连接,然后创建源建立连接并打开连接,然后创建 Command 对象执行相应操作,最后对象执行相应操作,最后关闭数据连接。关闭数据连接。ODBC 对象如下:对象如下:OdbcConnection:建立与:建立与 ODBC 数据源数据源的连接。的连接。OdbcCommand:执行一个:执行一个 SQL 语句或存语句或存储过程。储过程。OdbcDataReader:与:与 Command 对象一对
31、象一起使用,读取起使用,读取 ODBC 数据源。数据源。OdbcDataAdapter:创建适配器,用来填:创建适配器,用来填充充 DataSet。OdbcCommandBuilder:用来自动生成插:用来自动生成插入、更新、删除等操作的入、更新、删除等操作的 SQL 语句。语句。第第第第32323232页页页页3232使用使用 DSN DSN 的连接字符串进行连接的连接字符串进行连接 使用使用 DSNDSN(Data Source NameData Source Name,数据源名)连接数据库,数据源名)连接数据库,必须首选创建必须首选创建 ODBC ODBC 数据源,步骤如图:数据源,步骤
32、如图:第第第第33333333页页页页3333第第第第34343434页页页页3434第第第第35353535页页页页3535第第第第36363636页页页页3636示例代码示例代码 当创建完成数据源之后,就可以使用当创建完成数据源之后,就可以使用 OdbcConnection 对象连接应用程序和对象连接应用程序和数据库,在使用数据库,在使用 OdbcConnection 对象同样需要使用命名控件对象同样需要使用命名控件,示例代码,示例代码如下所示如下所示:string str=“DSN=guojing”;/使用使用 ODBC 数据源数据源 OdbcConnection con=new Odb
33、cConnection(str);con.Open();string strsql=select*from mytable;OdbcDataAdapter da=new OdbcDataAdapter(strsql,con);DataSet ds=new DataSet();da.Fill(ds,tablename);若需要执行插入、更新、删除等操作,可以使用若需要执行插入、更新、删除等操作,可以使用 Command 对象执行相应的对象执行相应的操作,示例代码如下所示:操作,示例代码如下所示:OdbcCommand cmd=new OdbcCommand(insert into mytable
34、 values(title),con);cmd.ExecuteNonQuery();第第第第37373737页页页页3737使用接字符串进行连接(使用接字符串进行连接(ACCESSACCESS)示例代码如下所示:示例代码如下所示:string str=provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=+Server.MapPath(acc.mdb)+;/配置连接对象配置连接对象OdbcConnection con=new OdbcConnection(str);/打开连接打开连接con.Open();第第第第38383838页页页页3838使用使用Wi
35、ndows Windows 身份验证连接(身份验证连接(SQL SQL ServerServer)当使用当使用 Windows 安全认证进行数据连接时,安全认证进行数据连接时,SQL Server 无需用户提供连接的用户名和密码即可连接,无需用户提供连接的用户名和密码即可连接,因因为为 Windows 安全认证是通过安全认证是通过 Windows 登录时的账号来登录时的账号来登录的。登录的。开发开发 ASP.NET 应用程序时,需要显式的声明这是一个安应用程序时,需要显式的声明这是一个安全的连接,示例代码如下所示。全的连接,示例代码如下所示。Driver=SQL Server;Server=(
36、local);Database=mytable;Trusted_Connection=Yes;第第第第39393939页页页页3939OLE DB.NET Data Provider OLE DB.NET Data Provider 简介简介 OLE DBOLE DB(Object Link and Embedding DatabaseObject Link and Embedding Database,对象连接与嵌套数据,对象连接与嵌套数据库)是访问数据库的另一个统一的接口标准,它建立在库)是访问数据库的另一个统一的接口标准,它建立在 ODBC ODBC 基础之上,基础之上,不仅能够提供传统
37、的数据库访问,并且能够访问关系型数据库和非关系不仅能够提供传统的数据库访问,并且能够访问关系型数据库和非关系型数据库。型数据库。OLE DB OLE DB 其本质就是一个封装数据库访问的一系列其本质就是一个封装数据库访问的一系列 COM COM 接口,使用接口,使用 COM COM 接口不仅能够减少应用程序和数据库之间的通信和交互,也能够极大的接口不仅能够减少应用程序和数据库之间的通信和交互,也能够极大的提升数据库的性能,让数据库的访问和操作更加便捷。提升数据库的性能,让数据库的访问和操作更加便捷。OLE DB.NET Data Provider OLE DB.NET Data Provide
38、r 支持支持 OLE DB Provider OLE DB Provider 包括:包括:SQLOLEDBSQLOLEDB:用来访问:用来访问 SQL Server SQL Server 数据库。数据库。MSDAORAMSDAORA:用来访问:用来访问 Oracle Oracle 数据库。数据库。:用于访问:用于访问 Access Access 等使用等使用 Jet Jet 引擎的数据库。引擎的数据库。第第第第40404040页页页页4040使用使用 OLE DB.NET Data Provider OLE DB.NET Data Provider 访问数据库同访问数据库同 ODBC.NET
39、ODBC.NET Data Provider Data Provider 相同,具有相同,具有 Connection Connection 对象、对象、Command Command 对对象等用于数据库的连接和执行,以及数据存储等,常用对象象等用于数据库的连接和执行,以及数据存储等,常用对象如下所示:如下所示:OleDbConnection:建立与:建立与 ODBC 数据源数据源的连接。的连接。OleDbCommand:执行一个:执行一个 SQL 语句或语句或存储过程。存储过程。OleDbDataReader:与:与 Command 对象一对象一起使用,读取起使用,读取 ODBC 数据源。数据
40、源。OleDbDataAdapter:创建适配器,用来填:创建适配器,用来填充充 DataSet。OleDbCommandBuilder:用来自动生成:用来自动生成插入、更新、删除等操作的插入、更新、删除等操作的 SQL 语句。语句。连接后,使用连接后,使用 Command Command 对象进行数据库操作,并使用对象进行数据库操作,并使用 Close Close 方法关闭数据连接。方法关闭数据连接。第第第第41414141页页页页4141使用接字符串进行连接(使用接字符串进行连接(ACCESSACCESS)使用接字符串进行连接(使用接字符串进行连接(ACCESSACCESS),示例代码如下
41、),示例代码如下:string str=provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=+Server.MapPath(access.mdb)+;OleDbConnection con=new OleDbConnection(str);trycon.Open();/打开连接打开连接Label1.Text=连接成功连接成功;/显式提示显式提示信息信息con.Close();/关闭连接关闭连接catch(Exception ee)/抛出异常抛出异常Label1.Text=连接失败连接失败;第第第第42424242页页页页4242使用接字符串进行使用接字符
42、串进行连接(SQL SQL ServerServer)OleDbConnection con=new OleDbConnection();con.ConnectionString=Provider=SQLOLEDB;DataSource=(local);Initial Catalog=mytable;uid=sa;pwd=sa;trycon.Open();/尝试打开连接尝试打开连接Label1.Text=连接成功连接成功;/显式连接信息显式连接信息con.Close();/关闭连接关闭连接catchLabel1.Text=连接失败连接失败;/抛出异常抛出异常第第第第43434343页页页页43
43、43连接连接MYSQL连接连接MYSQL,需要新建,需要新建 DSN,如图,如图:第第第第44444444页页页页4444配置完成后,即可通过使用配置完成后,即可通过使用 ODBC ODBC 类库进行数据库操作,示例代码如类库进行数据库操作,示例代码如下所示:下所示:string str=DSN=guojing;OdbcConnection con=new OdbcConnection(str);con.Open();OdbcDataAdapter da=new OdbcDataAdapter(select*from mytables,con);DataSet ds=new DataSet()
44、;da.Fill(ds,MySqltable);OdbcCommand cmd=new OdbcCommand(insert into mytables values(MySql title),con);cmd.ExecuteNonQuery();con.Close();第第第第45454545页页页页4545当需要脱离当需要脱离 DSN DSN 连接连接 MySql MySql 数据库时,可以不需要配置数据库时,可以不需要配置 DSN DSN 来访问来访问 MySql MySql 数据库,在编写数据库,在编写 MySql MySql 数据库连接字符数据库连接字符串时,串时,需要指定驱动程序名
45、称、需要指定驱动程序名称、IP IP 地址或数据库名,常用地址或数据库名,常用的关键字如下所示:的关键字如下所示:Driver:设置驱动程序名。:设置驱动程序名。Server:设置服务器的:设置服务器的 IP 地址或者是本地主机。地址或者是本地主机。Database:设置数据库名称。:设置数据库名称。Option:设置选项值。:设置选项值。UID:设置连接用户名。:设置连接用户名。PWD:设置连接密码。:设置连接密码。Port:设置连接端口,默认值为:设置连接端口,默认值为 3306。编写编写 MySql MySql 数据库连接字串代码如下所示:数据库连接字串代码如下所示:string strbase=Driver=MySql ODBC 5.1 Driver;Server=localhost;Database=test;UID=guojing;