ASP中RecordSet Open和Connection.Execute一些区别与细节分享

rs.open sql,conn:如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close
中间可以来多个记录集rs1.open sql1,conn,最后一块关闭记录集:rs.close rs1.close
conn.execute(sql) 如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close
中间可以来多个记录集rs1.open sql1,conn,最后一块关闭记录集:rs.close rs1.close.
如果sql是update,insert,delete则应该使用conn.execute(sql)也可以不要括号conn.execute sql
如果sql是select语句则应该使用set rs=conn.execute(sql)括号一定要,不能省略:这是因为vbscript的特性,带返回值
的调用必须加括号,不带返回值的调用可以不要括号。

注意:不管是rs.open sql,conn还是conn.execute(sql) [这里的SQL是delete,update,insert]执行以后都会返回一个关闭的记录集
也就是说如果sql是插入,更新,删除语句,那么set rs=conn.execute(sql)中的RS就没什么意义。

1.conn.execute

sql="select * from admin where username='xiaozhu'"
set rs=conn.execute(sql)
执行完以后自动关闭记录集
最后只需要关闭连接就可以了
conn.close
set conn=nothing

2.rs.open

set rs=server.createobject("adodb.recordset")
sql="select * from admin where username='xiaozhu'"
rs.open sql,conn,1,1
可以自己设定一些参数,即锁定和游标的移动方式
最后要关闭记录集和连接
rs.close
set rs=nothing
conn.close
set conn=nothing

3.command.execute

sql="select * from admin where username='xiaozhu'"
set rs=command.execute(sql)

*****************************************************************************
1.

set rs=conn.execute("如果是select语句") 得到的rs.recordcount=-1
rs.open sql,conn("sql为select语句") 得到的rs.recordcount为正常的记录数

2.

rs.open是打开数据库 conn.execute 是执行SQL指令
set rs=conn.execute(insert,update,delete)返回一个关闭了的记录集
set rs=conn.execute(select)返回一个没有关闭的记录集

3.

CONN.EXECUTE(SQL,RowsAffected,C)
参数含义:
SQL的值可以是SQL语句、表名、存储过程名,也可以是数据提供者所能接受的任意字符串。为了提高性能,最好为C参数指定合适的值
可选参数RowsAffected将返回INSERT、UPDATE或DELETE查询执行以后所影响的数目。这些查询会返回一个关闭的Recordset对象。
一个SELECT查询将返回RowsAffected值为-1并且返回带有一行或多行内容的打开的Recordset。

4.

conn.execute sql适合于不需返回recordset对象时使用,比如下面的代码:

sql="delete from enews where id="&cstr(id)
conn.execute sql

如果需要返回recordset对象,则使用如下代码:

sql="select from enews where id="&cstr(id)
set rs = conn.execute(sql)

如果去掉execute(sql)这儿的括号(即为set rs = conn.execute sql),就会提示“语句未结束”这样的错误提示,我翻看了一下语法格式,发现有二种格式,详解如下:
格式一:Connection对象名.Execute(SQL指令).
格式二:Connection对象名.Execute(数据表名)。

rs.open sql,conn
rs.open sql,conn,1,1
rs.open sql,conn,3,2
rs.open sql,conn,3,3

关于上面语句中后面的数字都代表什么意思?还有省略数字(rs.open sql,conn)时默认的是哪一个?

最佳答案

RS.OPEN SQL,CONN,A,B

A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1) 可读写,当前数据记录可自由移动
ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动,可看到新增记录
ADOPENSTATIC(=3) 只读,当前数据记录可自由移动

B: ADLOCKREADONLY(=1) 缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2) 悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3) 乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4) 批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间, 数据在这段时间被更新。这减少了资源的使用。

到此这篇关于ASP中RecordSet Open和Connection.Execute一些区别与细节分享的文章就介绍到这了,更多相关RecordSet Open和Connection.Execute内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ASP中RecordSet Open和Connection.Execute一些区别与细节分享

    rs.open sql,conn:如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close 中间可以来多个记录集rs1.open sql1,conn,最后一块关闭记录集:rs.close rs1.close conn.execute(sql) 如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close 中间可以来多个记录集r

  • ASP中Null,Empty,Nothing的区别分析

    本文介绍在ASP中,NULL,Empty,Nothing这几种空值的来源和判断方法. Dim   A   Dim   B   As   String   Dim   C   As   Integer   Dim   D   As   Object A  等于 Empty,因为尚未初始化的「不定型变量」都等于 Empty.但如果检测 A = "" 或 A = 0,也都可以得到True 值.   B  等于   "", 因为尚未初始化的非固定长度「字串」都等于 &quo

  • ASP中使用Set ors=oConn.Execute()时获取记录数的方法

    复制代码 代码如下: <% Dim oConn, ors, aRows Dim i,j Set oConn=Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database/newasp.resx") Set ors=oConn.Execute(&q

  • asp中在JScript中使用RecordSet对象的GetRows

    写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript.但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法. 在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在取出数组后尽早释放Recor

  • asp中的rs.open与conn.execute的区别说明

    rs.open sql,conn:如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close 中间可以来多个记录集rs1.open sql1,conn,最后一块关闭记录集:rs.close rs1.close conn.execute(sql) 如果sql是delete,update,insert则会返回一个关闭的记录集,在使用过程中不要来个rs.close在文件最后再写rs.close 中间可以来多个记录集r

  • ASP中利用execute实现动态包含文件的方法

    摘要:本文介绍了ASP中动态包含ASP文件,并使其中ASP类(Class)可实例化的方法. ASP中,include file/virtual 是优先脚本代码处理的,所以无法使用include动态包含ASP文件.我们可以使用Execute函数动态执行所需代码. 方法: Execute(ASP代码) 例子:(vbCrLf为换行符) 复制代码 代码如下: Execute("Class clsAbc"&vbCrLf&"Public Function output&q

  • ASP中Server.Execute和Execute实现动态包含(include)脚本的区别

    最近打算尝试一下在ASP中实现MVC架构,肯定有人问我:ASP都淘汰了,为什么还研究?这点我也知道,自从微软放弃ASP 3.0转向ASP.NET后,ASP已经远远落后于和它几乎同时开始的PHP和JSP,开源比闭源的好处就像PHP和ASP一样,ASP说淘汰就淘汰,谁也救不了,但是值得注意的是ASP在中国市场还是蛮广泛的,尤其是一些中小企业的一些应用,简单的CMS不在话下,而且部署简单,在一些老旧的Windows系统上,不需要安装.NET Framework基本上就可以直接运行了,所以准备一个框架,

  • asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明

    1. Rs.Open SQL,Conn,A,B,C 2. Conn.Execute(SQL,RowsAffected,C) 一.Conn.Execute(SQL,RowsAffected,C) 参数含义: SQL的值可以是SQL语句.表名.存储过程名,也可以是数据提供者所能接受的任意字符串.为了提高性能,最好为C参数指定合适的值 可选参数RowsAffected 1.一个Insert.Update或Delete查询执行以后,RowsAffected返回所影响的数目,这些查询会返回一个关闭的Rec

  • 在ASP中调用存储过程的几种方法

    1 这也是最简单的方法,两个输入参数,无返回值: set connection = server.createobject("adodb.connection") connection.open someDSN  Connection.Execute "procname varvalue1, varvalue2" '将所有对象清为nothing,释放资源 connection.close set connection = nothing 2 如果要返回 Record

  • asp中COM组件中如何连接数据库的代码

    VB- 工程 -引用 - ADO 2.0 ,建一个类DB,工程名设为 SQLCONN 以下是偶程序中的部分代码,大家有空可以试试 Option Explicit Public strError As String Public Conn As New ADODB.Connection Public Rs As New ADODB.Recordset Public Property Get ErrorString() As String ErrorString = strError End Pro

随机推荐