(悬赏100分)VB6.0 数据库操作问题,谁知道在存入一条记录的同时获得其ID号?
发布网友
发布时间:2022-04-14 15:20
我来回答
共4个回答
懂视网
时间:2022-04-14 19:41
保存数据时同时取出该数据的记录ID insert into Table(a,b) values(1,2) select @@identity
保存数据时同时取出该数据的记录ID
insert into Table(a,b) values(1,2) select @@identity
热心网友
时间:2022-04-14 16:49
不知道LZ使用什么数据库,如果使用Access数据库可以采用下面办法:
首先须保证获得记录集的方式支持bookmark属性,如1,3
插入一条带自动编号字段的记录后,获取该记录的bookmark属性值
temp = rs.bookmark
然后
rs.bookmark = temp
Response.write rs.Fields("ID").
如果是SQL Server数据库,那就更简单了,如果ID是自动增长的话可以通过select ##identity 语句直接获得.
如果是MySQL,直接使用LAST_INSERT_ID()函数,具体写SQL按下面格式即可:
select last_insert_id() as ID from XXXX limit 1
-----------------------------------------
注意上面所有的办法,前提是要求你的ID是真的主键,我见过很多XD写个ID纯粹是为了格式通过.还有就是,如果你的程序会有大量的并发连接,上面所有的方式都有可能失效,也就是你插入数据后,别人也插入一个数据,然后你取最后的ID,这个是必然的,主要是没有办法避免同步的问题.
热心网友
时间:2022-04-14 18:07
sql="insert into atable(a,b) values('c','d')"
SQL = "select @@identity as ID"
Rs.Open SQL, CNN, adOpenStatic, adLockReadOnly, 1
temp_id = Rs!ID
Rs.Close
temp_id就是刚刚新插入记录的id
热心网友
时间:2022-04-14 19:42
是自动获取ID吗?如果是这样的话,先把数据库里的最后一个ID读取出来加1不就行了?
Dim conn As New ADODB.Connection
Dim connstr As String
Dim sdbname As String
sdbname = App.Path + "\db\#db.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security Info=False;" & "Data Source=" & sdbname & ";" & "Jet OLEDB:"
conn.Open connstr
Dim sql As String
sql = "Select * from title order by id desc"
Dim rs As New ADODB.Recordset
rs.Open sql, conn, 1, 1
dim id as integer
id=rs("id")+1
Dim sql2 As String
sql2 = "Select * from title order by id desc"
Dim rs2 As New ADODB.Recordset
rs2.Open sql2, conn, 1, 1
rs2.addnew
rs2("XX")=XX
rs2.update
conn.close