当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP讲座之七:ASP与数据库(二)

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

ASP讲座之七:ASP与数据库(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 91 ::
收藏到网摘: n/a

在上一讲中,我们学习了如何与数据库建立连接和从数据库中检索数据,今天的内容是如何向数据库中添加新数据、修改和删除数据库中的数据。

一、 向数据库中添加新数据
方法一:使用SQL语句,例wuf50.asp。
为了简化以后的程序,将与Access数据库的连接部分放在一个文件中,此文件以后需要用到时不再说明。
<% 'AdoAccess.asp
Option Explicit
Response.Expires = 0
'第一部分: 建立连接
Dim Cnn, StrCnn
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Inetpub\home\asp\Northwind.mdb"
Cnn.Open StrCnn
%>
程序wuf50.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<% ' wuf50.asp
'第二部分: 使用 Connection 对象的 Execute 添加新数据
Dim StrSQL, rsTest
StrSQL = "INSERT INTO 运货商 (公司名称,电话) VALUES('wu''feng','0571-7227298')"
Cnn.Execute StrSQL
%>
<HTML>
<BODY>
<% '第三部分: 将得到的记录集显示到浏览器
Set rsTest = Cnn.Execute("Select * From 运货商")
Do While Not rsTest.EOF    
Response.Write rsTest(0) & "  "  & rsTest(1) & "  "  & rsTest(2) & "  "  & "<BR>"
    rsTest.MoveNext       
Loop

'第四部分: 打扫战场
Cnn.close
Set rsTest = Nothing: Set Cnn = Nothing
%>
</BODY>
</HTML>
请注意以下几点:
1. 使用SQL语句向Access数据库中添加数据时必须使用Insert Into,而向SQL Server数据库中添加数据,使用Insert就可以了。
2. 使用SQL语句添加数据的格式如上例,注意需要添加'wu'feng',在语句中必须使用'wu''feng',因为SQL语句使用'作为字符串的分界符。
3. 把本例同以前所学的知识结合起来,就可以实现从HTML表单中添加数据。
4. 注意有一个数据类型为自动编号的字段,如本例中的“运货商ID”,因此你大可不必考虑如何写代码获得一个递增的编号。

方法二:使用Recordset对象的Addnew方法,例wuf51.asp。
<% @LANGUAGE = VBScript %>
<!--#include file="AdoAccess.asp"-->
<!--#include file="adovbs.inc"-->
<% ' wuf51.asp
'第二部分: 使用 Recordset 对象的 AddNew 方法添加新数据
Dim StrSQL, rsTest
Set rsTest = server.CreateObject("ADODB.Recordset")
rsTest.CursorType = adOpenKeySet  'adOpenDynamic
'没有下面这一句, 将不允许更新数据库, 为什么?
rsTest.LockType = adLockOptimistic
rsTest.Open "运货商",Cnn,,,adCmdTable

rsTest.AddNew
rsTest("公司名称") = "wu'feng"
rsTest("电话") = "0571-7227298"
rsTest.Update
%>
<HTML>
<BODY>
<% '第三部分: 将得到的记录集显示到浏览器
'将数据库指针移到表中的第一条记录
If Not rsTest.EOF <> 0 Then
Response.Write "表中现有 [" & rsTest.RecordCount & "] 条数据" & "<Br><Br>"
rsTest.MoveFirst
End If

Do While Not rsTest.EOF    
Response.Write rsTest(0) & "  "  & rsTest(1) & "  "  & rsTest(2) & "  "  & "<BR>"
    rsTest.MoveNext       
Loop

'第四部分: 打扫战场
Cnn.close
Set rsTest = Nothing: Set Cnn = Nothing
%>
</BODY>
</HTML>
分析:
1. 为何要设置rsTest.LockType = adLockOptimistic
Recordset对象的LockType属性有四个可选值:
adLockReadOnly——默认值,表示以只读方式打开记录集,因而无法无法更改数据,在这种情况下使用AddNew方法就会发生错误。
adLockPessimistic——保守式记录锁定(逐条)。采用编辑时立即锁定数据源的记录的方式。此时,其他用户不能访问该数据。
adLockOptimistic ——开放式记录锁定(逐条)。只在调用 Update 方法时锁定记录。想想,