ASP.NET立即上手精品教程(9)
获得知识的途径有很多,现在由小编为大家讲解有关语言编程的文章希望对大家有所帮助 |
c语言编程入门服务器端数据介绍
数据访问是现实世界中应用程序的核心内容。.net提供了一套丰富的控件,他与CLR(通用语言运行库)提供的用来管理数据访问的APIs(应用程序接口)紧密结合。本章预排几个反复使用asp.net的DateGrid控件来绑定SQL查询结果和XML数据文件的例子。本章假定学习者熟悉基础和SQL查询语言。
Wincheer注:预排(walk through)这个词不知道该怎样准确翻译,他的意思是在计算机程序中,在一个小组内进行有组织的讨论,以便对计算机程序的逻辑进行跟踪检查的一个过程。
服务器端数据访问比较独特,其原因在于web页面是无态的。这就导致在试图执行事务,如插入或者更新记录的时候,出现了一些有难度的挑战。正如你将在本章看到的,DataGrid控件能够帮助管理这些挑战,允许你浓缩更多的应用程序逻辑,并且减少事件处理和状态管理的细节。
Connections(连接)、Commands(命令)、和Datasets(数据集)
通用语言运行时刻(CLR)提供了一整套管理数据访问的APIs,用来增强数据应用程序开发环境。这些应用程序接口用一致的方式来取得和填充数据,而不管实际的数据源是什么(, OLEDB, XML,等等)最常用的三个对象是connections, commands, 和 datasets.
Connection 表示到数据存储的物理连接,例如连接SQL Server 或者 XML文件。
Command 表示取得(select)或者操作(insert, update, delete)数据存储的命令。
Dataset 表示应用程序用以工作的实际数据。注意datasets 总是与他们的数据源连接和数据模型分离,并且可以被独立修改。 不过,对dataset进行修改,可以很容易的与原始数据模型协调一致。
关于在通用语言运行时刻管理数据访问的更多细节问题,请参阅ADO.NET概述。
访问基于SQL的数据
应用程序常常需要对SQL数据库执行一个或多个select, insert, update, 或者delete 语句。下面的表格展示了一些实现这些功能的示例代码。
以下为引用的内容: 功能 举例 —————————————————————— 简单查询 | SELECT * from Employees WHERE FirstName = 'Bradley'; —————————————————————— 联合查询 | SELECT * from Employees E, Managers M WHERE E.FirstName = M.FirstName; —————————————————————— 插入 | INSERT into Employees VALUES ('123-45-6789','Bradley','Millington','Program Manager'); —————————————————————— 更新 | UPDATE Employees SET Title = 'Development Lead' WHERE FirstName = 'Bradley'; —————————————————————— 删除 | DELETE from Employees WHERE Productivity < 10; —————————————————————— |
首先将需要备份的网站文件前的复选框选中,然后点击“添加到压缩文件”超连接,接着在弹出的对话框中输入文件名称,注意一定要输入以zip为后缀的压缩文件格式。确定后稍等片刻,一个文件压缩包就制作完成了。只需要将其下载,放置在安全的地方保存就可以了。
在管理器主页面的功能菜单中选择“上传文件”按钮,将在网页最下方打开文件上传模块(如图2),点击“浏览”按钮选择本地文件,然后再点击上传即可。程序中的文件容量栏目会自动显示该文件占用网站空间的大小,文件大小会以KB或Byte两种单位显示。我们可以根据此功能方便的对网站文件进行整理归类操作;点击下载超连接可以将网站文件下载到本地硬盘,操作方式与普通下载方式无异,还可以使用迅雷等下载工具进行文件的高速下载;软件还提供了功能强大的编辑器(如图3),点击编辑连接后会显示文件的源代码,它还提供了本地预览与在线预览的功能,使网站文件的调试工作变得非常简单高效;
文件管理器程序可以进行几乎所有的文件管理操作。它不仅具备一般的上传、下载、新建、重命名文件等功能,还提供了诸多实用的其它功能,根据这些实用功能,我们可以完成对网站的管理维护等相关操作。
#p#分页标题#e#
C语言视频教程要想让你的页面能够访问SQL数据库,必须在页面中引入System.Data 和 System.Data.SqlClient名称空间:
<%@ Import Namespace=”System.Data” %>
<%@ Import Namespace=”System.Data.SqlClient” %>
为了从SQL数据库执行select查询,你需要通过连接字符串建立一个连接到数据库的SqlConnection对象, 然后构造一个包含查询语句的SqlDataAdapter对象。为了用查询的返回结果填充到DataSet 对象,需要调用SqlDataAdapter的Fill方法。
以下为引用的内容: SqlConnection myConnection = new SqlConnection(“server=(local)\\\\NetSDK;database=pubs;Trusted_Connection=yes”); SqlDataAdapter myCommand = new SqlDataAdapter(“select * from Authors”, myConnection); DataSet ds = new DataSet(); myCommand.Fill(ds, “Authors”); |
正如本章前面提到的那样,使用dataset的好处在于提供了一个分离的数据库视图。你可以在应用程序中操作dataset,然后将你的修改与实际的数据库一致。对于长时间运行的应用程序来说,由于避免了频繁的读取数据源,因而是最好的处理办法。对于web应用程序来说,往往使用简短的操作(通常只是简单的显示数据)来处理客户端的请求。在这种情况下,我们就可以使用SqlDataReader来代替DataSet对象。
SqlDataReader对象提供了一种从sql数据库取得数据时,只向前,只读的指针。由于SqlDataReader对象使用表格式数据流(TDS)直接从数据库连接读取数据,所以,在允许使用的情况下,他的执行效率高于DataSet。
使用SqlDataReader对象的时候,需要使用SqlCommand来代替SqlDataAdapter。SqlCommand 使用 ExecuteReader 方法得到SqlDataReader对象。注意在使用SqlCommand的时候,必须显式地打开和关闭SqlConnection。调用ExecuteReader方法之后,SqlDataReader对象就可以作为数据源绑定到ASP.NET服务器控件了。下一个小节将会演示这种情况。
以下为引用的内容: SqlConnection myConnection = new SqlConnection(“server=(local)\\\\NetSDK;database=pubs;Trusted_Connection=yes”); SqlCommand myCommand = new SqlCommand(“select * from Authors”, myConnection); myConnection.Open(); SqlDataReader dr = myCommand.ExecuteReader(); … myConnection.Close(); |
当执行一条不需要返回数据的SQL命令,如inserts, updates, 和 deletes,也使用SqlCommand。该命令通过调用ExecuteNonQuery方法来执行,返回实际处理的行数。注意使用SqlCommand的时候,必须显式的打开连接;而SqlDataAdapter则自动的打开连接。
以下为引用的内容: SqlConnection myConnection = new SqlConnection(“server=(local)\\\\NetSDK;database=pubs;Trusted_Connection=yes”); SqlCommand myCommand = new SqlCommand( “UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'”, myConnection); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close(); |
重要提示:页面执行完毕之后,记得务必将数据模型的连接关闭。否则的话,当等待垃圾回收功能处理页面实例的时候,可能在不经意间就消耗尽连接数限制。
将SQL数据绑定到DataGrid
下面的例子展示了将一个简单的查询语句绑定到DataGrid 控件。DataGrid 交付了一个包含sql数据的表。
类似数据绑定那一章提到的DropDownList, DataGrid 控件支持Ienumerable或者 Icollection 类型的DataSource属性,就如同DataSet一样。你可以通过将(包含在DataSet中的)表的DefaultView属性赋值给想使用的(DataSet中的)表的名称,来使用DataSet控件, DefaultView 属性表示DataSet中当前表的状态,包含应用程序代码所作的任何改变(例如行删除或者值的改变)。设置了DataSource 属性以后,可以调用DataBind()来填充控件。
以下为引用的内容: MyDataGrid.DataSource=ds.Tables[“Authors”].DefaultView; MyDataGrid.DataBind(); |
另一个相同的语法是同时指定DataSource 和DataMember. 在本例中, ASP.NET自动为你获取了取得了DefaultView。
以下为引用的内容: MyDataGrid.DataSource=ds; MyDataGrid.DataMember=”Authors”; MyDataGrid.DataBind(); |
#p#分页标题#e#
C语言教程你也可以直接绑定到SqlDataReader。如果你仅仅显示数据,那么SqlDataReader 的”只向前”特性非常适合这种场合,同时你可以得到更高的执行性能。
注意:在本章的剩余部分,我们使用的都是DataSet这种数据访问模式来演示;实际上,这些例子也同样可以使用SQLDataReader来重写。
执行用参数表示的Select命令
你也可以使用SqlDataAdapter对象来执行带参数的select语句。下面的例子演示如何使用select HtmlControl控件传递的值来改变查询的结果。
SqlDataAdapter 包含Parameters 集合,可以使用变量标识符(名称前加一个”@”) 来代替值。 你可以给这个集合增加一个新的SqlParameter 来指定参数的名称、类型、和大小,然后设置他的Value属性的值。
以下为引用的内容: myCommand.SelectCommand.Parameters.Add(new SqlParameter(“@State”, SqlDbType.NVarChar, 2)); myCommand.SelectCommand.Parameters[“@State”].Value = MySelect.Value; |
重要提示:注意DataGrid的EnableViewState属性缺省设置是false。如果在每一次页面请求时填充数据,就没有必要让DataGrid保存表单发送的状态信息。由于DataGrid保存它包含的所有的状态的数据,因此将EnableViewState关闭可以提高页面执行性能。
上面的例子静态的填充列表框的数据。如果数据库中的值已经发生了变化,这种方法就不能够很好的工作。 由于列表框也支持IEnumerable DataSource属性,所以你可以使用select查询来动态的填充列表框的值,这样可以保证数据库和用户接口总是一致的。下面的例子演示了这个过程。
在SQL数据库中插入数据
为了在数据库中插入一行记录,你可以在页面上增加一个输入表单,然后在表单提交的事件句柄中执行一条插入命令。就像上面两个例子一样,你是用命令对象的参数集合填充命令的值。在插入数据的之前,注意检查并确保从表单得到的值不能为空,这样可以避免数据库字段约束条件的意外错误。为了防止数据表中主索引与欲插入的记录重复,可以使用try/catch语句块来执行插入命令。
除了明确的检查输入数据以外,你也可以使用前面章节提到的验证控件来检查数据输入。下面的例子向你展示了如何使用做到这一点。注意正则表达式验证控件在检查作者id、邮政编码和电话号码等字段时的方便。
文章看完啦是不是意犹未尽,更多视频教程尽在课课家官方网站,让我们一起沉浸在知识的海洋。 |