网络课程设计与开发12章_第1页
网络课程设计与开发12章_第2页
网络课程设计与开发12章_第3页
网络课程设计与开发12章_第4页
网络课程设计与开发12章_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第12章ADO.NET与数据访问12.1ADO.NET数据访问框架ADO.NET代表.NET中许多与数据访问相关的类及技术。通过建立ADO.NET类的对象,可以进行数据访问的操作。ASP.NETWebFormADO.NET数据提供者数据库Database网页程序.NETDataProviderDatabase12.1.1.NET数据提供者.NET

Framework提供了4组数据提供者以供选择,以便针对不同的数据库提供最佳的访问效能。System.Data.OleDb:支持OLEDB界面的数据库,AccessSystem.Data.SqlClient:SQL

Server

7.0/2000/2005System.Data.Odbc:支持ODBC界面的数据库System.Data.OracleClient:Oracle8.1.7之后的版本12.1.2ADO.NET数据访问模式System.Dta.SqlDataClient数据提供者包括:SqlConnection、SqlDataReader、SqlDataAdapter、DataSet等5类,通过建立它们的对象,可以对数据库进行查询、新增、修改及删除的处理。ADO.NET数据访问有两种模式:连线模式、离线模式。连线模式:读取数据时必须与数据库保持连接。1、以SqlConnection与SQLServer2005Express数据库建立连接2、以SqlCommand对数据库执行SQL语句3、以DataReader逐条读取数据离线模式:一旦将数据整批取回,便可切断连接,后续的数据读取操作不再依赖数据连接。1、以SqlConnection与SQLServer2005Express数据库建立连接2、以SqlDataAdapter执行SQL语句3、取回整批数据放入DataSet中的DataTable里4、数据整批取回便可切断连接5、从DataTable中读取数据12.2以SqlConnection建立数据库连接在打开数据库之前,必须先设置连接字符串,然后调用Open方法打开它,可对数据库进行访问,最后调用Close方法关闭它。12.2.1连接字符串(ConnectionString)DataSource=.\SQLEXPRESS;

AttachDBFilename=|DataDirectory|NORTHWND.MDF;IntegratedSecurity=True;UserInstance=True;12.2.2建立SqlConnection对象<%@ImportNamespace="System.Data.SqlClient"%>SqlConnectioncn=newSqlConnection();或者varcn=

newSqlConnection();或者SqlConnectioncn;cn=newSqlConnection();12.2.3打开及关闭连接protectedvoidPage_Load(objectsender,EventArgse)

{SqlConnectioncn=newSqlConnection();cn.ConnectionString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|NORTHWND.MDF;IntegratedSecurity=True;UserInstance=True";cn.Open();Response.Write("SQL连接打开.<p/>");cn.Close();Response.Write("SQL连接关闭.<p/>");}13.2.4判断连接状态若要得知目前的连接状态,可用State属性加以判断。State属性是一个只读属性,有6种状态值:Broken:连接中断Closed:连接已关闭Connecting:连接中Executing:执行指令中Fetching:读取数据中Open:连接已打开protectedvoidPage_Load(objectsender,EventArgse)

{

SqlConnectioncn=newSqlConnection();cn.ConnectionString=……….cn.Open();if(cn.State==System.Data.ConnectionState.Open)

{

Response.Write("SQL连接打开.<p/>");cn.Close();}

if(cn.State==System.Data.ConnectionState.Closed)

{Response.Write("SQL连接关闭.<p/>");}

}12.3以SqlCommand执行SQL语句连接建立后才可以通过对象修改、删除、查询数据,SqlCommand对象要借助SqlConnection对象才能对数据库执行指令。12.3.1建立SqlCommand对象var

cmd=newSqlCommand();SqlCommand

cmd=newSqlCommand();或SqlCommand

cmd;

cmd=newSqlCommand();12.3.2SqlCommand常用属性SqlCommand对象主要是对数据库执行SQL语句,要先设置好它的Connection及CommandText属性。Connection属性用来指定连接对象。protectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=……….;varcmd=newSqlCommand();cmd.Connection=cn;cmd.CommandText=“INSERTCustomers(CustomerID,CompanyName)VALUES(‘AAASP’,‘ASPNETCompany’)”;

}12.3.3执行SQL语句根据SQL语句的类型及返回结果,SqlCommand提供几个不同的执行方法。SqlCommand执行方法适用情况返回值ExecuteNonQueryINSERT、UPDATA、DELETE整数。代表影响的数据条数ExecuteReaderSELECTE语句SqlDataReader对象。可读出所有查询结果ExecuteScalarSELECTE语句,且只要第一条数据的第一个数据行Object对象。代表第一条数据的第一个数据行的内容INSERT语句protectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=………;varcmd=newSqlCommand();cmd.Connection=cn;cmd.CommandText="INSERTCustomers(CustomerID,CompanyName)VALUES('AAASP','ASPNETCompany')";cn.Open();varrecords=cmd.ExecuteNonQuery();cn.Close();Response.Write("添加了"+records.ToString()+"条数据");}12.4异常的捕捉与处理12.4.1打开数据库连接可能产生的异常protectedvoidPage_Load(objectsender,EventArgse)

{

SqlConnectioncn=newSqlConnection();cn.ConnectionString=………;

try

{cn.Open();Response.Write("SQL连接打开.<p/>");}

catch(Exceptionex){Response.Write(ex.Message);}

finally

{if(cn.State==System.Data.ConnectionState.Open)

{cn.Close();Response.Write("SQL连接关闭.<p/>");}

}}12.4.2执行SQL语句时发生的异常原因:违反数据表的条件约束;输入了错误的数据表、列;SQL语法错误。1、新增或修改数据时,若发现与既有数据的主键值重复,或不允许其值为Null的列没有设置值,此时会因为违反约束条件而发生异常。2、在SQL语句中输入了错误的表、列名称而引起异常。3、SQL语法错误可以使用SqlException异常捕捉程序产生的异常protectedvoidPage_Load(objectsender,EventArgse)

{…cmd.CommandText="INSERTCustomers(CustomerID)VALUES('AAASP')";try{cn.Open();varrecords=cmd.ExecuteNonQuery();cn.Close();Response.Write("添加了"+records.ToString()+"条数据");}catch(SqlExceptionex)

{Response.Write(ex.Message);}finally{if(cn.State==System.Data.ConnectionState.Open)

{cn.Close();}

}}12.4.3其他异常若要报错画面不会直接呈现在用户面前,可以在try...catch中捕捉一般性的异常。catch(SqlExceptionSqlex){Response.Write("数据库异常:"+Sqlex.Message);}catch(Exceptionex){Response.Write("其他异常:"+ex.Message);}12.5以SqlDataReader读取数据SqlDataReader用来在采用连线模式时读取数据。若要判断是否有数据可读,可以先用SqlDataReader的HasRows属性判断是否有数据可以回传,若有则回传True,再调用Read方法可以往下读取一条数据,若有则回传TtectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=………….;varcmd=newSqlCommand();cmd.Connection=cn;cmd.CommandText="Select*fromCustomers";cn.Open();vardr=cmd.ExecuteReader();if(dr.HasRows)

{while(dr.Read())

{Response.Write("客户编号:"+dr["CustomerID"]);}}dr.Close();cn.Close();}12.6SqlDataAdapter与DataSet离线模式:SqlDataAdapter取回的数据放入DataSet的表中。数据库SqlConnectionSqlDataAdapterDataSetDataTableWebFormprotectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=………;varda=newSqlDataAdapter("select*fromCustomers",cn);vards=newDataSet();//调用Fill方法执行SQL语句,并将返回数据填入ds的

Customers表中intcounter=da.Fill(ds,"Customers");Response.Write("取回:"+counter.ToString()+"条数据");

}读取DataSet中的表内容要访问表中的内容,可以适用Row集合。DataTableRowsDataSetprotectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=……….;varda=newSqlDataAdapter("select*fromCustomers",cn);vards=newDataSet();intcounter=da.Fill(ds,"Customers");Response.Write("取回:"+counter.ToString()+"条数据");

foreach(DataRowdrinds.Tables["Customers"].Rows)

{

Response.Write(dr["CustomerID"]+"<br/>");}

}12.7设置SQL语句中的参数12.7.1在SQLCommand中加入@开头的参数protectedvoidButtonSearch_Click(objectsender,EventArgse){

…cmd.CommandText="SelectProductNamefromProductswhereCategoryID=@CategoryID";cmd.Parameters.AddWithValue("@CategoryID",TextBox1.Text);cn.Open();

vardr=cmd.ExecuteReader();BulletedListProduct.DataSource=dr;BulletedListProduct.DataTextField="ProductName";BulletedListProduct.DataBind();cn.Close();

}12.7.2SqlDataAdapter与参数protectedvoidButtonSearch_Click(objectsender,EventArgse){…….cmd.CommandText="SelectProductNamefromProductswhereCategoryID=@CategoryID";cmd.Parameters.AddWithValue("@CategoryID",TextBoxCategory.Text);varda=newSqlDataAdapter();da.SelectCommand=cmd;vards=newDataSet();da.Fill(ds,"Products");…}

12.8使用服务器控件展示数据服务器控件有些可以与数据“绑定”在一起,只要将服务器控件的数据来源设置到某个SqlDataReader对象,就可以通过其读取数据。13.8.1使用GridView展示数据protectedvoidPage_Load(objectsender,EventArgse)

{

varcn=newSqlConnection();cn.ConnectionString=………..;varcmd=newSqlCommand();cmd.Connection=cn;cmd.CommandText="SelectEmployeeID,Firstname,LastNamefromEmployees";cn.Open();vardr=cmd.ExecuteReader();

GridView1.DataSource

温馨提示

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

评论

0/150

提交评论