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

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 105 ::
收藏到网摘: 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 方法时锁定记录。想想,