第二章 基础知识介绍
了一系列的服务器系统,这些内建安全技术的系统全部支持XML,这样加速了系统、应用程序以及同样使用Web Services的伙伴应用之间的集成。
.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 C#.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web Services)。
C#.NET 是使开发人员能够使用 .NET Framework 开发基于 Web 的应用程序的宿主环境。但是,C#.NET 不止是一个运行库宿主;它是使用托管代码开发网站和通过 Internet 分布的对象的完整结构。Web 窗体和 XML Web Services 都将 IIS 和 C#.NET 用作应用程序的发布机制,并且两者在 .NET Framework 中都具有支持类集合。
2.1.1 C#.NET的主要功能与特点
1.C#.NET访问数据库的原理
C#.NET是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。当用户使用浏览器请求ASPX主页时,WEB服务器响应,调用ASP引擎来执行ASPX文件,并解释其中的脚本语言(JScript 或VCScript),通过SQLBC连接数据库,由数据库访问组件ADO(ActiveX Data Objects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。由于ASPX在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASPX源程序不会泄密,增加了系统的安全保密性。此外,ASPX是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。
2.ASPX页面的结构
ASPX的程序代码简单、通用,文件名由.aspx结尾,ASPX文件通常由四部分构成:1)标准的HTML标记:所有的HTML标记均可使用。2)ASPX语法命令:位于<% %>标签内的ASPX代码。
3.C#.NET的运行环境
目前C#.NET可运行在三种环境下。
1) WINDOWS NT server 4.0运行IIS 3.0(Internet Information Server)以上。 2) WINDOWS NT workstation 4.0运行Peer Web Server 3.0以上。 3) WINDOWS 95/98运行PWS(Personal Web Server)。
6
第二章 基础知识介绍
4) WINDOWS XP/VISTA
其中以NT server上的IIS功能最强,提供了对C#.NET的全面支持,是创建高速、稳定的ASPX主页的最佳选择。
4.C#.NET的内建对象
C#.NET提供了六个内建对象,供用户直接调用:
1) Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。
2) Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支持。
3) Request对象:从用户端取得信息传递给服务器,是ASPX读取用户输入的主要方法。
4) Response对象:服务器将输出内容发送到用户端。 5) Server对象:提供对服务器有关方法和属性的访问。
6) Object Context对象:IIS 4.0新增的对象,用来进行事务处理。此项功能需得到MTS(Microsoft Transcation Server)管理的支持。
5.ASPX的主要内置组件:
1) Ad Rotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日益重要的广告服务。
2) Browser Capabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括类型、性能、版本等。
3) 数据组件:提供ADO (ActiveX Data Objects)和ADO.NET来访问支持ODBC/SQLBC的数据库。
4) File Access组件:提供对服务器端文件的读写功能。
5) Content Linking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航条。
此外,还可安装Myinfo、Counters、Content Rotator、Page Count等组件,用户也可自行编制Actiive组件,以提高系统的实用性。
6.Database Access组件ADO.NET
WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO.NET组件,ADO.NET是ASPX内置的ActiveX服务器组件(ActiveX Server Component),通过在WEB服务器上设置ODBC和OLEDB可连接多种数
7
第二章 基础知识介绍
据库:如SYBASE、ORACLE、INFORMIX、SQL SERVER、ACCESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。
ADO.NET组件主要提供了以下七个对象和四个集合来访问数据库。 1) Connection对象:建立与后台数据库的连接。 2) Command对象:执行SQL指令,访问数据库。
3) Parameters对象和Parameters集合:为Command对象提供数据和参数。 4) RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。 5) Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功能。
6) Property对象和Properties集合:提供有关信息,供Connection、Command、RecordSet、Field对象使用。
7) Error对象和Errors集合:提供访问数据库时的错误信息。 7.ASPX访问数据库步骤
在ASPX中,使用ADO.NET组件访问后台数据库,可通过以下步骤进行: 1. 定义数据源
在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQL SERVER”,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript。
2. 使用ADO.NET组件查询WEB数据库
1) 调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open方法打开数据库:
conn = Server.CreateObject(“ADODB.Connection”) conn.Open(“HT”) 2) 指定要执行的SQL命令
连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有“X”的记录
sqlStr = “select * from signaltab where code like ‘%X%’” rs = conn.Execute(sqlStr)
3) 使用RecordSet属性和方法,并显示结果
为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。
rs = Server.CreateObject(“ADODB.RecordSet”)
8
第二章 基础知识介绍
rs.Open(sqlStr,conn,1,A) 注:A=1读取
A=3 新增、修改、删除
在RecordSet组件中,常用的属性和方法有: rs.Fields.Count: RecordSet对象的字段数。
rs(i).Name: 第i个字段的名称,i为0至rs.Fields.Count-1 rs(i): 第i个字段的数据,i为0至rs.Fields.Count-1 rs(\字段名\: 指定字段的数据。 rs.Record.Count:游标中的数据记录总数。 rs.EOF: 是否最后一条记录。 rs.MoveFirst: 指向第一条记录。 rs.MoveLast: 指向最后一条记录。 rs.MovePrev: 指向上一条记录。 rs.MoveNext: 指向下一条记录。 rs.GetRows: 将数据放入数组中。
rs.Properties.Count:ADO.NET的ResultSet或Connection的属性个数。 rs.Properties(item).Name:ADO.NET的ResultSet或Connection的名称。 rs.Properties: ADO.NET的ResultSet或Connection的值。 rs.close(): 关闭连接。 4) 关闭数据库 conn.close() 2.1.2 查询数据库举例
下面这用Admin访问SQL SERVER数据库的BBS表来说明。 下面的代码是管理员管理留言板的页面的后台代码:
using System;
using System.Data;
using System.Configuration; using System.Collections; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
9
第二章 基础知识介绍
using System.Web.UI.HtmlControls; using System.Data.SqlClient;
public partial class Admin_LinkAdmin : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if (!this.IsPostBack) {
if (Session[\ {
Response.Redirect(\ } else {
this.lb_to_name.Text = \欢迎您:\
Session[\
}
this.bindgridview(); } }
//定义一个绑定到gridview的方法,实现分页功能! public object bindgridview()
{ SqlConnection con = DBAccess.createsqlcon(); con.Open();
//试用sqldataadapter+set来实现数据源的绑定,实现gridview分页功能。 SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand(\ DataSet ds = new DataSet(); sda.Fill(ds, \
this.GridView1.DataSource = ds.Tables[\ // 对应行的主键标识!
GridView1.DataKeyNames = new string[] { \ this.GridView1.DataBind(); return ds; }
protected void lbt_exit_Click(object sender, EventArgs e) { //
Response.Write(\ }
protected void GridView1_PageIndexChanging1(object sender, GridViewPageEventArgs
10