主题:我换个方式来表达我的疑问,希望这次表达清楚了。。。关于rs.open
这有两段代码:
第一段:
dim sql,rs
sql="select * from [user] where username='" & username & "'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
if not(rs.bof and rs.eof)
then
error=true
errmsg=errmsg & "
<li>你注册的用户已经存在!请换一个用户名再试试!</li>"
else
rs.addnew
.....
rs.update
.....
第二段:
dim sql,rs
sql = "select * from [user]"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
rs.addnew
.....
rs.update
.....
大家都知道rs.open操作的对象或者说基础,必须要由sql语句来指定,那么第一段代码里面,sql语句指定的数据集是用户名为username的字段,而第二段代码里面,sql指定的数据集是所有字段,二者指定的内容不一样,但是都可以用rs.addnew来更新数据库,这是为什么?虽然第一段代码先做了用户名是否被占用的判断,但是对rs.addnew来说,他所操作的对象或者说基础是不一样的,但是都可以达到向数据库加入新用户的目的,这该怎么理解?
我自己的想法是:第一段代码,能执行rs.addnew的情况实际上只有一种,那就是用户名为username的字段集合为空的时候,而第二段代码,执行rs.addnew的基础其实在某种情况下也可以是字段集合为空,比如说对第一个来注册的用户来说,两段代码中sql指定的集合其实都为空。。。。。
第一段:
dim sql,rs
sql="select * from [user] where username='" & username & "'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
if not(rs.bof and rs.eof)
then
error=true
errmsg=errmsg & "
<li>你注册的用户已经存在!请换一个用户名再试试!</li>"
else
rs.addnew
.....
rs.update
.....
第二段:
dim sql,rs
sql = "select * from [user]"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
rs.addnew
.....
rs.update
.....
大家都知道rs.open操作的对象或者说基础,必须要由sql语句来指定,那么第一段代码里面,sql语句指定的数据集是用户名为username的字段,而第二段代码里面,sql指定的数据集是所有字段,二者指定的内容不一样,但是都可以用rs.addnew来更新数据库,这是为什么?虽然第一段代码先做了用户名是否被占用的判断,但是对rs.addnew来说,他所操作的对象或者说基础是不一样的,但是都可以达到向数据库加入新用户的目的,这该怎么理解?
我自己的想法是:第一段代码,能执行rs.addnew的情况实际上只有一种,那就是用户名为username的字段集合为空的时候,而第二段代码,执行rs.addnew的基础其实在某种情况下也可以是字段集合为空,比如说对第一个来注册的用户来说,两段代码中sql指定的集合其实都为空。。。。。