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