三、ASP访问数据库步骤
在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:
1. 定义数据源
在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQL SERVER”,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript.
2. 使用ADO组件查询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”)
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的ResultSet或Connection的属性个数。
rs.Properties(item)。Name:ADO的ResultSet或Connection的名称。
rs.Properties: ADO的ResultSet或Connection的值。
rs.close(): 关闭连接。
4) 关闭数据库
conn.close()
四、查询WEB数据库举例
下面这段示例程序是访问SQL SERVER数据库的 signaltab表,表中有三个字段:code(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd.
屏幕输入页面input.asp
% @ language=javascript %
html
head
title 请输入查询条件PLEASE INPUT CONDITION /title
/head
form action=shotquery.asp METHOD=“post” target=“_self”
input TYPE=“text” size=6 maxlength=3 NAME=signalCode VALUE=“代码” /font /p
/center /div p /p
input LANGUAGE=“JavaScript” TYPE=“submit” VALUE=“确认” NAME=“B1”
input TYPE=“reset” VALUE=“清除”NAME=“B2”
input LANGUAGE=“JavaScript” TYPE=“button” NAME=“B3” VALUE=“返回”
window.history.back()”
/font /p
/center /div
/form
/body
/html
数据库处理程序shotquery.asp
!——#include virtual=“/master/lib.inc”——
script language=javascript runat=server
var signalCode=Request.Form(“signalCode”);
dbConn = Server.CreateObject(“ADODB.Connection”);
dbConn.open(“DSN=HT;UID=client;PWD=passwd”);
rs = Server.CreateObject(“ADODB.RecordSet”);
var sqlStr = “select * from signaltab order by code”;
rs.open(sqlStr,dbConn,1);
if(rs.RecordCount 1) {
Response.write(“ p 无符合条件记录 /p ”);
Response.write(“ p form input type='button' value=' 返回' name='b1' /form /p ”);
}
else {
Response.write(“ P center B 数据查询结果 /B /center /P ”);
Response.write(“ tr td b 代码 /b /td td b 分类 /b /td td b 备注 /b /td ”);
for(var i = 1;i = rs.Pagesize;i++) {
if(!rs.Eof) {
Response.write(“ td span ”+rs(“code”)+“ /span /td ”);
Response.write(“ td span ”+rs(“class”)+“ /span /td ”);
Response.write(“ td span ”+rs(“memo”)+“ /span /td ”);
Response.write(“ /tr ”);
rs.MoveNext();
}
else break;
}
Response.write(“ /table /form ”);
rs.close();
dbConn.close();
}
/script