第二十届十大忠诚卫士:请问这两句asp语言有什么区别

来源:百度文库 编辑:高考问答 时间:2024/05/02 09:59:46
1.
set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from SMT_ypxxone where SMT_ypxxone_id="&request("id")
rs.open sql,conn,1,3
rs("SMT_date")=now()
rs.Update
rs.Close
set rs=nothing

2.
conn.execute("update SMT_ypxxone set SMT_date="&SMT_citytime&" where SMT_ypxxone_id="&request("id"))

我没有具体改,就是想问一下这两种更新数据的方法有什么区别.至于写入的内容我还是能看懂地.

另外,请大家具体说说他们地使用场合.谢谢哈.

还有一个问题,就是,
rs.open sql,conn,1,3
这后面地1,3 都什么意思,虽然我查了一些资料,但还不知道怎么具体用.因为mdb数据库可能同时访问地人比较多,而且一个页面都要调用好几次,什么10次数据库,因此我不知道这两个参数该究竟如何选择.

请高手指点一下啊.细致点的哦.

再次谢谢了.

首先回答第一个问题,就是conn.open()和conn.execute的区别。
第一种方法是传统的recordset方法读取,为了弄明白这个问题我们把上面的语句详细分析一下
rs.open sql,conn,1,3
rs.open表示打开一个记录集,(空格)说明后面是参数,这里实际上是要加一个括号的,参数一“SQL语句”,参数二是数据库联接语句,参数三是数据库指针移动方式,参数三是数据库锁定方式(这里在第二个问题中详细解释)。
上面的操作实际上是一个持续联接的打开方式,必须在conn.open以后执行,而从conn.open/rs.open以后一直到rs.close/conn.close之间的过程是一直和数据库保持连接的,所以一般说这种方法是不可取的。但是特殊情况除外,比如说分页操作就必须使用这个方法。
-------------------------------------------

第二种方法也是比较好的一种方法,他的命令是conn.execute(SQL)我们一般使用它执行只有一行返回值的更新或者删除插入等操作,

我们先说说他的执行模式,他不用手动打开数据库或者连接,当执行execute操作的时候和数据库进行一次交互然后返回一个数据集合,这样就减少了数据库的占用时间,因此在前边所述的操作要尽量使用这种方法,以减少数据库负担。execute返回一个二维数组可以用在数据查询上,效率要超过rs数十倍,不过这个要等加分了再说。。。。。呵呵·
-------------------------------------------------
///////////////////////////////////////////////

最后解释一下rs.open sql,conn,1,3 最后的两个参数是什么意思。
第一个参数是指针移动类型,一般使用1(单一向前移动)还有一个2 是在特殊情况使用的。
第二个参数是数据库占用类型,1是只读模式,用于查询,效率较高,2是悲观锁定,用于删除,3是乐观模式,用于更新之类的咚咚,实际上这个可以让你用于任何模式。。

一种是通过sql语句直接执行修改,一种是通过ado的recordset来修改。
在asp中,推荐使用第二种方式,第一种经常出现莫名其妙的错误。