《ASP NET开发与应用实践》课件第6章_第1页
《ASP NET开发与应用实践》课件第6章_第2页
《ASP NET开发与应用实践》课件第6章_第3页
《ASP NET开发与应用实践》课件第6章_第4页
《ASP NET开发与应用实践》课件第6章_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

本章要点使用控件操作数据库使用ADO.NET对象操作数据库ADO.NET的数据集16.1ASP.NET数据库操作概述2中央数据库用户需要时,可以随时访问数据用户计算机向数据库服务器发送请求客户端31、通过控件方式使用ADO.NET可以不编写代码或少量编写代码,它简单、易用、快速,但对于复杂问题处理不灵活。访问数据的两种方式2、通过编程方式使用ADO.NET对象访问方式比较灵活,可以满足编程人员的各种需求。ADO.NET体系结构.Net数据提供程序有四个核心对象Connection对象:用于与特定数据源建立连接。Command对象:用于对数据源执行命令,包括插入数据、修改数据、删除数据、查询数据以及运行存储过程等数据库支持的SQL命令。DataReader对象:用于从数据源中读取向前的、只读的数据流,它是一个快速而且高效的数据集,另一个数据集是DataSet。DataAdapter对象:用于从数据源产生一个DataSet,并且更新数据库。6.2数据库的控件连接SqlDataSource控件是ADO.NET的可视化对象,通过它可以访问多种数据库,其在工具箱中的图标为。使用时可以将此控件拖放到VisualStudio的Web窗体中。在Web窗体运行时,此控件是不可见的。配置过程中可以生成的一个连接字符串。DataSource指明SQLServer服务器地址,InitialCatalog指明数据库,IntegratedSecurity=True表示使用Windows验证。定义要执行的SQL命令运行结果6.2.2使用SqlDataSource控件操作数据库设计的页面SqlDataSource的配置自动生成的前台页面代码如下:<asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="DataSource=\MSSQLSERVER2014;InitialCatalog=stu;PersistSecurityInfo=True;UserID=sa;Password=123"InsertCommand="insertinto学生(学号,姓名)values(@stuno,@stuname)"ProviderName="System.Data.SqlClient"SelectCommand="select*from学生where1=0"><InsertParameters><asp:ControlParameterControlID="T_StuNo"Name="stuno"PropertyName="Text"/><asp:ControlParameterControlID="T_StuName"Name="stuname"PropertyName="Text"/></InsertParameters></asp:SqlDataSource>SqlDataSource控件设置了ConnectionString属性,但这个连接字符串是固化在页面文件中的,当数据库服务器地址、用户名、密码等发生变化时,程序将会因数据库连接不上而出错,而Web.config文件中的连接字符串用户可以随时修改,所以应该使用Web.config文件中的连接字符串,代码可以修改成如下形式:<asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ConnectionStrings:stuConnectionString%>";…</asp:SqlDataSource>其中,<%$用于访问web.config文件中的数据,stuConnectionString为web.config文件中的连接字符串名称。在“录入”按钮上添加Click事件代码:protectedvoidBt_Enter_Click(objectsender,EventArgse){try{

SqlDataSource1.Insert();//执行插入语句

ClientScript.RegisterStartupScript(this.GetType(),"","<scripttype='text/javascript'>alert('录入成功');</script>");}catch(Exceptioner){ClientScript.RegisterStartupScript(this.GetType(),"","<scripttype='text/javascript'>alert('录入失败');</script>");}}6.3数据库的对象连接6.3.1Connection对象Connection对象用于连接到数据源。Connection对象分为以下午4种:SqlConnection:用于连接SQLServer7.0或更高版本OleDbConnection:用于连接OLE数据源,例如Access数据库OdbcConnection:用于连接ODBC数据源OracleConnection:用于连接Oracle数据库

usingSystem.Data.SqlClient;//访问SQLServer数据库的ADO对象所在的命名空间为什么使用Connection?15应用程序数据源第一个步骤是连接Connection桥梁Connection主要成员属性说明ConnectionString连接字符串方法说明Open打开数据库连接Close关闭数据库连接16必须显式关闭连接连接到数据库连接到SQLServer的Stu数据库:SqlConnectionconn=newSqlConnection();conn.ConnectionString="DataSource=CUITSZW\\MSSQLSERVER2014;InitialCatalog=stu;IntegratedSecurity=True";conn.Open();也可以使用如下形式:SqlConnectionconn=newSqlConnection("DataSource=CUITSZW\\MSSQLSERVER2014;InitialCatalog=stu;IntegratedSecurity=True");conn.Open();如果SQLServer使用SQL身份验证,连接字符串形式如下:DataSource=服务器名;InitialCatalog=数据库名;UserID=用户名;Pwd=密码如果SQLServer使用Windows身份验证,连接字符串形式如下:DataSource=服务器名;InitialCatalog=数据库名;Catalog=x1;IntegratedSecurity=SSPI";关闭连续接在访问数据库任务完成以后,应使用Close方法关闭连接。因为大多数数据源只支持打开有限数目的连接,并且打开的连接占用宝贵的系统资源,所以在使用连接时,应该尽可能晚的打开连接,尽可能早的关闭连接。关闭连接方法:conn.Close();6.3.2Command对象在创建Connection对象后,需要创建Command对象实现对数据库的操作。Command对象要与对应的连接对象匹配:对SqlConnection采用SqlCommand;对OleDbConnection采用OleDbCommand。为什么使用Command?20应用程序打开数据库处理数据……数据源Connection?怎样处理数据Command第二个步骤是执行命令;为访问和操作数据作好准备,也可直接从数据源中返回结果Command的主要成员属性说明CommandType=Text;执行SQL语句CommandType=StoredProcedure;执行的存储过程21方法说明ExecuteNonQuery执行不返回行的语句,如UPDATE等ExecuteReader返回DataReader对象ExecuteScalar返回单个值,如执行COUNT(*)使用Command步骤使用Command步骤:1、创建数据库连接2、定义SQL语句3、创建Command对象4、执行命令22SqlConnectionconnection=newSqlConnection(connString);stringsql="SELECTCOUNT(*)FROMStudent";connection.Open();//打开数据库连接SqlCommandcommand=newSqlCommand(sql,connection);intnum=(int)command.ExecuteScalar();执行命令前,必须打开数据库连接!取单一值,要进行聚合数据!Command对象用SQL语句的Command设置SqlCommandComm=newSqlCommand();Comm.CommandText="SQL语句";Comm.CommandType=CommandType.Text;Comm.Connection=sqlConn;用存储过程的Command设置SqlCommandComm=newSqlCommand();Comm.CommandText="sp_UpdateName";Comm.CommandType=CommandType.StoredProcedure;Comm.Connection=sqlConn;其中,Sp_UpdateName是在SQLServer服务器上创建的存储过程23【例6-6】设计的界面学号:<asp:TextBoxID="T_StuNo"runat="server"></asp:TextBox><br/>姓名:<asp:TextBoxID="T_StuName"runat="server"></asp:TextBox><br/>性别:<asp:RadioButtonListID="RBL_Sex"runat="server"RepeatDirection="Horizontal"><asp:ListItem>男</asp:ListItem><asp:ListItem>女</asp:ListItem></asp:RadioButtonList>【例6-6】

protectedvoidBt_Enter_Click(objectsender,EventArgse){SqlConnectionconn=newSqlConnection();//创建连接对象

conn.ConnectionString=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//从web.config文件中读取连接字符串

try{conn.Open();//打开连接

SqlCommandcmd=newSqlCommand();//创建命令对象

cmd.Connection=conn;//设置Command对象关联的连接对象

cmd.CommandText="insertinto学生(学号,姓名,性别)values(@stuno,@stuname,@sex)";//定义插入数据的SQL命令

cmd.Parameters.AddWithValue("@stuno",T_StuNo.Text.Trim());//给sql中的参数赋值,即界面上学号文本框的值给@stuno参数

cmd.Parameters.AddWithValue("@stuname",T_StuName.Text.Trim());cmd.Parameters.AddWithValue("@sex",RBL_Sex.SelectedValue.Trim());“录入”按钮的Click事件代码:if(cmd.ExecuteNonQuery()>0)//如果命令影响的行数大于0{ClientScript.RegisterStartupScript(this.GetType(),"","<scripttype='text/javascript'>alert('插入成功');</script>");}}catch(Exceptioner){ClientScript.RegisterStartupScript(this.GetType(),"","<scripttype='text/javascript'>alert('数据库操作失败:"+Message+"');</script>");}finally{if(conn.State==System.Data.ConnectionState.Open)//如果连接已打开

{conn.Close();//关闭连接

}}}【例6-6】6.3.3DataReader对象27关闭数据库应用程序

数据库N个表1、用Connection.Open建立连接2、用Command执行命令3、使用DataReader读数据库中的表表中的记录DataReader对象提供一个只读的,单向前移的记录集。使用该对象可以有效的节约内存,因为内存中一次只保存一条记录,而不是将所有记录都装入内存,在检索大量数据时,建议使用DataReader。DataReader对象只能与Command对象结合使用,并且要与Command对象的类型相匹配:对于SqlCommand应使用SqlDataReader;对于OleDbCommand则采用OleDbDataReader。DataReader对象的常用属性和方法DataReader对象的常用属性有:HasRows:判断SqlDataReade是否包含一行或多行记录。IsClosed:判断DataReader对象是否关闭。DataReader对象的常用方法有:Read():判断是否还有记录,如果有,则读取下一条记录。GetName():取得字段的名称。GetValue():取得以本机格式表示的指定列的值。Close():关闭DataReader对象。IsNull():判断字段是否为null值。【例6-7】使用DataReader对象读取学生表的数据并显示在ListBox控件中SqlCommandcmd=newSqlCommand("select学号,姓名,性别,出生日期from学生",conn);//创建命令对象

SqlDataReaderreader=cmd.ExecuteReader();//读取数据

while(reader.Read())//记录指针移动到下一行,如果指向数据行则为true{stringstuno=reader.GetString(0);//获取当前行的第1列的数据

stringstuname=reader[1].ToString();//获取当前行的第2列的数据

stringsex=reader["性别"].ToString();//获得当前行的性别列的数据

stringbirthday=reader.GetValue(3).ToString();//获取当前行的第4列的数据

stringstu=stuno+stuname+sex+birthday;ListBox1.Items.Add(stu);//将字符串加入ListBox控件中

}例6-7运行结果6.3.4DataAdapter对象DataAdapter用作DataSet和数据源之间的桥接器以便检索和保存数据,称为数据适配器。DataAdapter通过Fill和Update方法来提供这一桥接器。DataSetDataTableDataAdapterConnection和Command数据库32DataAdapter:它是DataSet对象和数据源之间的一个桥梁,用于从数据源中检索数据、填充DataSet对象中的表及对DataSet对象做出的更改提交回数据源DataAdapter:它使用Command对象从数据源中检索数据并将更改提交回数据源,Command对象体现在DataAdapter的SelectCommand、InsertCommand、UpdateCommand和DeleteCommand属性上。DataAdapter:它的Fill方法用于在DataSet中添加或刷新行以匹配数据源中的行。33使用DataAdapter对象从数据集更新数据库DataAdaptor.Fill应用程序

数据库1、用Connection.Open建立连接2、用Command执行命令3、使用DataAdapter对象填充数据集DataSet使用SqlDataAdapter示例代码SqlConnectionconn=newSqlConnection();//创建连接对象conn.ConnectionString="DataSource=CUITSZW\\MSSQLSERVER2014;InitialCatalog=stu;IntegratedSecurity=True";//设置连接字符串SqlCommandcmd=newSqlCommand();//创建命令对象cmd.Connection=conn;//设置命令对象关联的连接对象cmd.CommandText="select学号,姓名,性别,出生日期from学生";//设置查询命令SqlDataAdaptersda=newSqlDataAdapter();//创建数据适配匹器对象sda.SelectCommand=cmd;//设置数据适匹器对象SelectCommand属性关联的命令对象DataSetds=newDataSet();//创建数据集sda.Fill(ds);//通过数据适匹器对象填充数据集6.4DataSet对象DataSet对象是创建在内存中的集合对象,它可以包括任意数量的数据表,以及所有表的约束、索引和关系,相当于一个小型关系数据库。一个DataSet对象包括一组DataTable对象和DataRelation对象,其中每个DataTable对象由DataColumn、DataRow和DataRelation对象组成。DataSet对象结构6.4.2填充数据集形式一:SqlDataAdaptersda=newSqlDataAdapter(“select*from学生”,conn);DataSetds=newDataSet();sda.Fill(ds);形式二:SqlDataAdaptersda=newSqlDataAdapter(“select*from学生”,conn);DataSetds=newDataSet();sda.Fill(ds,”stu”);6.4.3访问数据集1.访问数据表可以使用以下形式访问数据表:

数据集.Tables[表名|索引]例如:DataTabledt=ds.Tables[“stu”];或DataTabledt=ds.Tables[0];6.4.3访问数据集2.访问数据行可以使用以下形式访问数据行:

DataTable.Rows[行索引]例如:DataRowrow=ds.Tables[“stu”].Rows[0];其中Rows[0]表示第1行,第2行为Rows[1]。行索引值不能越界,可以通过Rows.Count属性获取Table中的数据行数。6.4.3访问数据集3.访问数据列可以使用以下形式访问数据列:DataRow[列名|索引]或DataRow.Item[列名|索引]例如:stringstuno=ds.Tables[0].Rows[0]["学号"].ToString();或stringstuno=ds.Tables[0].Rows[0].ItemArray[0].ToString();4.访问视图通过DataTable的DefaultView属性,可以访问与数据表相关的视图。也可以通过DataView类的构造函数创建DataView。例如:DataViewdv1=ds.Tables[0].DefaultView;DataViewdv2=newDataView(ds.Tables[0]);视图可以排序和筛选数据。通过DataView的Sort属性可以排序数据,例如:dv1.Sort=“出生日期ASC”;通过DataView的RowFilter属性可以筛选数据,例如:dv.RowFilter="姓名like'李%'";【例6-9】访问数据集usingSystem.Data.SqlClient;…SqlDataAdaptersda=newSqlDataAdapter("select学号,姓名,性别,出生日期from学生",conn);//创建SqlDataAdapter对象

DataSetds=newDataSet();

温馨提示

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

最新文档

评论

0/150

提交评论