我们在设计数据库时一般都会设计一个自增长型的或GUID型的字段作为记录的唯一性标志,这样的字段在执行插入操作时其值一般都由数据库自行分配,不需要我们为其赋值,但是在实际使用过程中我们常常需要在完成插入操作以后立刻就返回新记录的ID,那么新记录的ID该如何取得呢,一般常用的有以下几种方法,其一是不使用自增长型字段,在插入前先计算出下一ID的值,由于ID值是计算出来的并不是由数据库分配的,所以自然可以轻松取得新记录的ID值了,这种方法一般常在存储过程里面结合事务一起来使用;其二是先执行插入操作,操作成功以后再执行一次查询操作,查询最后一条与插入的数据相匹配的记录,其对应的ID就是新记录的ID,如果是SQL Server数据库还可以在Insert语句后面跟上Select @@identity 来直接返回新记录的ID;
如果我们使用ADO RecordSet对象的AddNew方法进行数据库插入操作,实际上还有一种更简便的方法可以返回新记录的ID,比如:
dim id as long
'建立数据库连接
dim conn as new adodb.connection
conn.open …………
'打开news表并插入数据
dim rs as new adodb.recordset
rs.open "select id,title,content from news where 0=1",conn,1,1
rs.addnew
rs.fields("title")="标题"
rs.fields("content")="内容"
rs.update
id=rs.fields("id") '返回新记录的ID
rs.close
set rs=nothing
conn.close
set conn=nothing
从上面的代码可以看出来在rs.update将新记录保存到数据库以后先不关闭记录集,直接用rs.fields("id")就可以取得新记录的ID。