2007年04月07日

操作系统:Windows XP SP2
分区格式:NTFS
IIS版本:5.1

在进行ASP调试时,可能会出现以下问题:
(1)HTTP 500 – 内部服务器错误

问题描述:

无法显示网页
您要访问的网页有问题,无法显示。

——————————————————————————–

请尝试以下操作:

打开 127.0.0.1  主页,然后查找指向您感兴趣信息的链接。
单击刷新按钮,或以后再试。

单击搜索,寻找 Internet 上的信息。
也可查看相关站点列表。

 

HTTP 500 – 内部服务器错误
Internet Explorer 

(2)Active Server Pages 错误 ‘ASP 0201′

问题描述:

Active Server Pages 错误 ‘ASP 0201′

无效的默认脚本语言

为此应用程序指定的默认脚本语言无效。

****

针对(1)和(2)的问题的尝试解决办法:
打开控制面板-管理工具-Internet 信息服务
选择默认网站-属性-目录安全性-编辑
如果匿名用户选项被选中,单击浏览按钮,弹出对话框后,单击高级按钮,再弹出对话框后,单击立即查找,选择合适的用户,一路确定。
或直接将身份验证方法对话框的匿名用户处的匿名访问帐户IUSR_XXX改为XXX(把IUSR_去掉),
然后重启ISS服务即可(适用于本地调试)
也可打开计算机管理-本地用户和组-组,选择Administrator,将IUS_XXX加入到此组。
然后重启IIS服务(适用于本地调试)


(3)事件查看其中的DCOM系统错误信息

问题描述:
应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
{0C0A3666-30C9-11D0-8F20-00805F2CD064}
)的 本地 激活 权限授予用户 MACHINE_NAME\IWAM_XXX SID (S-1-5-21-854245398-220523388-839522115-1006)。可以使用组件服务管理工具修改此安全权限。
解决办法:
此问题的原因一般是在组件服务的Machine Debug Manager DCOM组件的权限设置:
打开管理工具-组件服务-计算机-我的电脑-DCOM选项,选择其下的“Machine Debug Manager”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“IWAM_XXX”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS。

问题描述:
应用程序-特定权限设置未将COM 服务器应用程序(CLSID 为 {A9E69610-B80D-11D0-B9B9-00A0C922E750} )的 本地 激活 权限授予用户 IBM-D882681D063\IWAM_IBM-D882681D063 SID (S-1-5-21-1304240173-3011969147-3728014682-1013)。可以使用组件服务管理工具修改此安全权限。
解决办法:
此问题的原因一般是在组件服务的IIS ADMIN SERVICE DCOM组件的权限设置:
解决方法和上面类似,打开管理工具-组件服务-计算机-我的电脑-DCOM选项,选择其下的“IIS ADMIN SERVICE ”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“IWAM_XXX”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS。

问题描述:
服务器 {BA126AD1-2166-11D1-B1D0-00805FC1270E} 没有在限定的时间内用 DCOM 注册。
解决办法:
暂时未找到解决办法,一种建议是修改在组件服务的netman DCOM组件的权限设置:
修改方法同上(但是修改后未解决)。
第二种建议是,在注册表中查找{BA126AD1-2166-11D1-B1D0-00805FC1270E}项,修改权限(此种方法复杂,有点冒险,没有进行)

2007年04月02日

在ASP中,可以通过ADO访问数据库,经常会用到ASP的三个内建对象(ADO):Connection、Recordset、Cmmand对象;以下的示例简单的说明了如何使用三个ADO对数据库进行操作,简单起见,采用了Microsoft Access数据库的文件DSN;使用的是VBScript。

<%@ Language=VBScript %>
<html>
<head>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<title>操作数据库的几种方法</title>
</head>

<body>
Please Input Personal Information:<br>
<form method=post action="dbmeth.asp">
FirstName:<input type=text name="firstname">
<br>LastName:<input type=text name="lastname">
<br>Sex:<input type=text name="sex">
<br>Age:<input type=text name="age">
<br><input type=submit value="connection" NAME="use_db">
<input type=submit value="recordset" NAME="use_db">
<input type=submit value="command" NAME="use_db">
</form>

<%
strFName = Request.Form("firstname")
strLName = Request.Form("lastname")
strSex = Request.Form("sex")
intAge = Request.Form("age")
strCommand = Request.Form("use_db")
Response.Write strFName
Response.Write strLName
Response.Write strSex
Response.Write intAge
Response.Write strCommand

IF  strCommand = "connection" Then
‘使用Connection对象进行操作
 strDSN = "FILEDSN=test.dsn"
 set cn = Server.CreateObject("ADODB.Connection")
 cn.Open strDSN

 strSQL = "INSERT INTO info(firstname,lastname,sex,age) VALUES(‘"&strFName&"’,'"&strLName&"’,'"&strSex&"’,"&intAge&")"
 cn.Execute(strSQL)
 

 strSQL = "SELECT * FROM info"
 set rsInfo = cn.Execute(strSQL) ‘返回Recordset对象
 

 set objno = rsInfo("No")
 set objfname = rsInfo("firstname")
 set objlname = rsInfo("lastname")
 set objsex = rsInfo("sex")
 set objage = rsInfo("age")

 Response.Write "<table cellspacing=0 cellpadding=0 border=1><tr><td>No</td><td>firstname</td><td>lastname</td><td>sex</td><td>age</td></tr>"

 Do Until rsInfo.EOF
 Response.Write "<tr><td>"&objno&"</td><td>"&objfname&"</td><td>"&objlname&"</td><td>"&objsex&"</td><td>"&objage&"</td></tr>"
 rsInfo.MoveNext
 Loop

 Response.Write "</table>"

 cn.Close
 set rsInfo = Nothing
 set cn = Nothing
ElseIf strCommand = "recordset" Then
‘使用Recordset对象进行操作
 strDSN = "FILEDSN=test.dsn"
 ’set cn = Server.CreateObject("ADODB.Connection")
 ’cn.Open strDSN
 
 ’strSQL = "INSERT INTO info(firstname,lastname,sex,age) VALUES(‘good’,'hoo’,'male’,43)"
 ’cn.Execute(strSQL)
 
 set rsInfo = Server.CreateObject("ADODB.Recordset")
 
 strSQL = "INSERT INTO info(firstname,lastname,sex,age) VALUES(‘"&strFName&"’,'"&strLName&"’,'"&strSex&"’,"&intAge&")"
 ’rsInfo.Open strSQL,cn
 rsInfo.Open strSQL,strDSN
 
 strSQL = "SELECT * FROM info" 
 ’rsInfo.Open strSQL,cn
 rsInfo.Open strSQL,strDSN

 set objno = rsInfo("No")
 set objfname = rsInfo("firstname")
 set objlname = rsInfo("lastname")
 set objsex = rsInfo("sex")
 set objage = rsInfo("age")

 Response.Write "<table cellspacing=0 cellpadding=0 border=1><tr><td>No</td><td>firstname</td><td>lastname</td><td>sex</td><td>age</td></tr>"

 Do Until rsInfo.EOF
 Response.Write "<tr><td>"&objno&"</td><td>"&objfname&"</td><td>"&objlname&"</td><td>"&objsex&"</td><td>"&objage&"</td></tr>"
 rsInfo.MoveNext
 Loop

 Response.Write "</table>"

 rsInfo.Close
 set rsInfo = Nothing

ElseIf strCommand = "command" Then
‘使用Command对象进行操作
 strDSN = "FILEDSN=test.dsn"
 set cn = Server.CreateObject("ADODB.Connection")
 cn.Open strDSN
 
 set cm = Server.CreateObject("ADODB.Command")
 set cm.ActiveConnection = cn
 
 cm.CommandText = "INSERT INTO info(firstname,lastname,sex,age) VALUES(?,?,?,?)"
 cm.Prepared = True
 
 cm.Parameters.Append cm.CreateParameter("vfname",200,,255)
 cm.Parameters.Append cm.CreateParameter("vlname",200,,255)
 cm.Parameters.Append cm.CreateParameter("vsex",200,,255)
 cm.Parameters.Append cm.CreateParameter("vage",3,,4)
 ’CreateParameter中的Type参数应该使用数值
 
 cm("vfname")=strFName
 cm("vlname")=strLName
 cm("vsex")=strSex
 cm("vage")=intAge
 cm.Execute
 
 strSQL = "SELECT * FROM info"
 set rsInfo = cn.Execute(strSQL) ‘返回Recordset对象
 

 set objno = rsInfo("No")
 set objfname = rsInfo("firstname")
 set objlname = rsInfo("lastname")
 set objsex = rsInfo("sex")
 set objage = rsInfo("age")

 Response.Write "<table cellspacing=0 cellpadding=0 border=1><tr><td>No</td><td>firstname</td><td>lastname</td><td>sex</td><td>age</td></tr>"

 Do Until rsInfo.EOF
 Response.Write "<tr><td>"&objno&"</td><td>"&objfname&"</td><td>"&objlname&"</td><td>"&objsex&"</td><td>"&objage&"</td></tr>"
 rsInfo.MoveNext
 Loop

 Response.Write "</table>"

 cn.Close
 set rsInfo = Nothing
 set cm = Nothing
 set cn = Nothing 
End If
strGet = ""
%>

</body>
</html>

Microsoft SQL Server7.0是一种大型、分布式数据库系统,也可被认为是一种大型、分布式数据仓库。SQL Server是一个十分注重安全性的数据库,特别是在7.0版本发布以后,可以将数据库的许可直接授予Windows NT用户,数据库角色也可以包括NT 用户或组及SQL Server旧版本的用户和角色。另外,结合Microsoft Proxy Server ,则必须通过代理服务器才能在Internet 上访问SQL Server,这样更确保了数据的安全。

一. 连接方案

   在连接方案上,可选择TCP/IP套接字和命名管道的方法访问。具有NT用户帐号的用户适合于采用命名管道的方法,没有NT用户帐号的用户则不适合用此方法。这是因为在建立连接之前,数据库用户必须被NT确认,而选择TCP/IP套接字的连接则无此限制,该连接可直接连到数据库服务器,不必通过使用命名管道的中间计算机,只要通过了SQL Server确认用户就可获得访问权。

  由于是编写数据库连接的ASP应用程序,采用的数据访问编程模式是ADO;在ADO以前的数据访问编程模式有数据访问对象DAO和远程访问对象RDO,RDO以及DAO都是在ODBC下开发的,ODBC是用C语言编写的基于SQL的桌面规程。相反,ADO是在一种新型的规程OLE DB下开发的,OLE DB可以被看作是OLE技术在数据库中应用。它是基于C++开发的,给ODBC的功能提供了标准化的COM接口。C++是面向对象的,因此ADO也具有面向对象的特性。并能通过一系列COM接口来扩展自己。这一点对于ASP程序来说很重要。我们知道ASP程序使用的VBScript脚本语言的功能是很弱的,若要扩充VBScript的能力,使其能访问数据,则必须创建一个服务器端组件,通过COM接口来访问数据,而这正是ADO所擅长的。

二. 连接方法

在ASP脚本中可以通过三种实用的方法连接数据库:通过ODBC DSN建立连接,通过oledb建立连接和通过driver建立连接。

(一) 通过ODBC DSN建立连接

运用ODBC数据源,首先必须在控制面板的ODBC中设置数据源,然后再编写脚本和数据库源建立连接。

1、创建 ODBC DSN

  在编程连接网络上指定的服务器和数据库时,必须在Web服务器上创建数据源名(DSN)。要设置一个DSN,必须给服务器提供数据库的名字、通信所用的ODBC驱动、以及在网络中的地址。要注意的是:只有设置的DSN为一个系统DSN,才能让ADO在ASP中正常工作。如何确定DSN是系统DSN而不是用户或文件DSN呢?很简单,只有对于NT服务器上的所有用户和服务都可以访问的DSN才是系统DSN。

        通过在 Windows 的"开始"菜单打开"控制面板",您可以创建基于 DSN 的文件。双击"ODBC"图标,然后选择"系统 DSN"属性页,单击"添加",选择数据库驱动程序,然后单击"下一步"。按照后面的指示配置适用于您的数据库软件的 DSN。

        配置 SQL Server 数据库系统 DSN:在"创建新数据源"对话框中,从列表框中选择"SQL Server",然后单击"下一步"。键入 DSN 文件的名称,然后单击"下一步"。单击"完成"创建数据源。键入运行 SQL 服务程序的服务器的名称、登录 ID 和密码。在"创建 SQL Server 的新数据源"对话框中,在"服务器"列表框中键入包含 SQL Server 数据库的服务器的名称,然后单击"下一步"。选择验证登录 ID 的方式。如果要选择 SQL 服务器验证,请输入一个登录 ID 和密码,然后单击"下一步"。在"创建 SQL Server 的新数据源"对话框中,设置默认数据库、存储过程设置的驱动程序和 ANSI 标识,然后单击"下一步"。(要获取详细信息,请单击"帮助"。)在对话框(同样名为"创建 SQL Server 的新数据源")中,选择一种字符转换方法,然后单击"下一步"。(详细信息,请单击"帮助"。)在下一个对话框(同样名为"创建 SQL Server 的新数据源")中,选择登录设置。 注意典型情况下, 您只能使用日志来调试数据库访问问题。 在"ODBC Microsoft SQL Server 安装程序"对话框中,单击"测试数据源"。如果 DSN 正确创建,"测试结果"对话框将指出测试成功完成。

2、编写脚本和数据库源建立连接

        ADO(ActiveX Data Objects ) 提供 Connection 对象,可以使用该对象建立和管理应用程序和 ODBC 数据库之间的连接。Connection 对象具有各种属性和方法,可以使用它们打开和关闭数据库连接。编写数据库连接脚本,首先应创建 Connection 对象的实例,接着打开数据库连接:
<%
set conn=server.createobject("adodb.connection")
conn.open "DSN=ODBC名称;Database=数据库名称;UID=;PWD=;"
%>

(二) 通过oledb建立连接

        运用oledb方法建立页面与数据库的连接, 不需要创建 ODBC DSN数据源,直接编写如下的脚本和数据源建立连接,是一种简单易用的方法。
<%
set conn=server.createobject("adodb.connection")
conn.open "Provider=SQLOLEDB;server=SQL服务器名称或IP地址;database=数据库名称;uid=;pwd="
%>

(三) 通过driver建立连接

        通过driver建立页面与数据库的连接,同样不需要创建ODBC DSN数据源,但必须知道实际的数据库文件路径或者数据源名(例如,SQLserver的数据库)。
<%
set conn=server.createobject("adodb.connection")
conn.open "driver={sql server};server=SQL服务器名称或IP地址;database=数据库名称;uid=;pwd="%>

三. 存取控制

  设计ASP程序连接SQL SERVER的另一个重要问题是实现对SQL SERVER的存取控制。由于在关系型数据库中,DBMS本身的DCL语言只支持对表和字段的存取控制,而不直接支持对表中记录提供安全性保护。为实现其安全性,同时又不失B/S结构的开放性,可以考虑采用使用中间层存取程序逻辑结合触发器的方式来实现。使用中间层存取程序即用户端程序不直接访问DBMS,而是通过一个中间层的存取程序。

        以网上BBS应用为例,用户查询时,存取程序把表中的全部记录返回给用户;用户插入记录时,存取程序在新记录的User_name字段填写当前用户名,表明记录的主人,当用户删除和修改记录时,存取程序根据User_name字段向用户返回只属于他自己的记录,并允许用户从自己的记录中选择进行操作。使用触发器的方式则是所有用户直接访问表,但在表上建立如下的触发器:

CREATE TRIGGER trigger_1 on table_ 1 FOR INSERT AS
BEGIN
IF EXITS(SELECT * FROM inserted WHERE User_name<>User_name())
BEGIN
ROLLBACK TRANSACTION
RAISERROR(‘请输入正确的用户名’,16,-1)
END
END
CREATE TRIGGER trigger_2 on table_1 FOR UPDATE,DELETE AS
BEGIN
IF EXITS (SELECT * FROM deleted WHERE User_name<>User_name())
BEGIN
RAISERROR(‘你不能修改他人的数据’,16,-1)
END
END

  在上面的程序中,trigger_1对于用户名不正确的用户的插入请求予以否决。trigger_2对于试图修改他人的记录的请示予以否决。由于触发器附着在SQL Server的基本表中,无论用户通过何种方式更新记录,都无法跳过触发器的检查,因此使用触发器实现的安全性是相当高的。但由于在表中只能定义针对手稿删除和修改的触发器,不能定义针对查询的触发器,因此,要实现对查询的存取控制,则要通过中间层存取程序,只有向用户查询请示返回特定条件的记录来实现。

1.ASP与ACCESS数据库连接:
<%
dim conn,mdbfile
mdbfile=server.mappath("数据库名称.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
%>

2. ASP与SQL数据库连接:

<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服务器名称或IP地址;UID=sa;PWD=数据库密码;DATABASE=数据库名称
%>

建立记录集对象:

set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2

 

3. SQL常用命令使用方法:

(1) 数据记录筛选:

sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
sql="select * from 数据表 where 字段名 like ‘%字段值%‘ order by 字段名 "
sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
sql="select * from 数据表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"
sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(5) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

 

(6) 记录集对象的方法:

rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

判断所填数据是数字型

if not isNumeric(request("字段名称")) then
response.write "不是数字"
else
response.write "数字"
end if

经常使用到有关数据库的操作。包括连接代码、SQL命令等等,又不曾刻意去记忆它们(我本人是不愿意去记这东东),所以常常在用到的时候又去查书本,翻来翻去。一些比较少用的数据库还不一定能顺利找到,所以现在把它们全归纳到这里,提供大家参考。(个人水平有限,有缺陷之处,欢迎大家指正。)

<一>。数据库的连接方法:

1.Access数据库的DSN-less连接方法:

set adocon=Server.Createobject("adodb.connection")
adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _
Server.MapPath("数据库所在路径")

2.Access OLE DB连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _
"Data Source=" & Server.MapPath("数据库所在路径")

3.SQL server连接方法:

set adocon=server.createobject("adodb.recordset")
adocon.Open"Driver={SQL Server};Server=(Local);UID=***;PWD=***;"& _
"database=数据库名;"

4.SQL server OLE DB连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"provider=SQLOLEDB.1;Data Source=RITANT4;"& _
"user ID=***;Password=***;"& _
"inital Catalog=数据库名"

5.Oracle 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

6.Oracle OLE DB 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

7.dBase 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=————;"

8.mySQL 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

9.Visual Foxpro 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"

10.MS text 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft text driver(*.txt; *.csv)};dbq=—–;"&_
"extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"

11.MS text OLE DB 连接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=microsof.jet.oledb.4.0;data source=your_path;"&_
"Extended Properties’text;FMT=Delimited’"

<二>。常用的四种SQL命令:

1.查询数据记录(Select)
语法:Select 字段串行 From table Where 字段=内容
例子:想从book表中找出作者为"cancer"的所有记录,SQL语句便如下:
select * from book where author=’cancer’
"*"是取出book表所有的字段,如查询的字段值为数字,则其后的"内容"便无须加上单引号,

如是日期,则在Access中用(#)包括,而在SQL server中则用(’)包括,
如:

select * from book where id=1
select * from book where pub_date=#2002-1-7# (Access)
select * from book where pub_date=’2002-1-7’ (SQL Server)

提示:
日期函数to_date不是标准sql文,不是所有的数据库适用,所以大家在使用的时候要参考数据库具体语法

另外如果是查询传入的变量,则如下:

strau=request.form("author")
strsql="select * from book where author=’"&strau&"’"

如果查询的是数字,则:

intID=request.form("id")
strsql="select * from book where id="&intID

在很多数据库中,如:oracle,上面的语句是可以写成:
strsql="select * from book where id=’"&intID&"’"的。
但是字符型一定不能按照数字格式写,需要注意。

2.添加记录(Insert)
语法:Insert into table(field1,field2,….) Values (value1,value2,….)
例子:添加一作者是"cancer"的记录入book表:
insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer无组件上传程序’)
同样,如果用到变量就如下:

strno=request.form("bookno")
strau=request.form("author")
strname=request.form("bookname")
strsql="insert into book (bookno,author,bookname) values (’"&strno&"’,’"&strau&"’,’"&strname&"’)"

3.用Recordset对象的Addnew插入数据的方法:
语法:

rs.addnew
rs("field1").value=value1
rs("field2").value=value2

rs.update

4.修改数据记录(Update)
语法:update table set field1=value1,field2=value2,…where fieldx=valuex
例子:update book set author=’babycrazy’ where bookno=’CF001’
如果用到变量就如下:

strno=request.form("bookno")
strau=request.form("author")
strsql="update book set author=’"&strau&"’ where bookno=’"&strno"’"

5.Recordset对象的Update方法:
语法:

rs("field1").value=value1
rs("field2").value=value2

rs.update

注意:使用语法3和语法5的时候,一定要注意字段的类型(尤其是日期型)一致,否则出错的几率非常的高。

例子:

strno=request.form("bookno")
strau=request.form("author")
set adocon=server.createobject("adodb.connection")
adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _
Server.Mappath=("/cancer/cancer.mdb")
strsql="select * from book where bookno=’"&strno&"’"
set rs=server.createobject("adodb.recordset")
rs.open strsql,adconn,1,3
if not rs.eof then ’如果有此记录的话
rs("author").value=strau
rs.update
end if
rs.close
set rs=nothing
adocon.close
set adocon=nothing

6.删除一条记录(Delete)
语法:Delete table where field=value
例子:删除book表中作者是cancer的记录

delete book where author=’cancer’

(注意:如果book表中author字段的值为cancer的记录有多条,将会删除所有author为cancer的记录)

好了,学会了用这些操作,大家在用asp操作数据库的时候,该是没有什么问题了