怎样得到刚插入数据库的记录的主键id?
我知道可以用
INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name) SELECT @@IDENTITY AS ID
来得到刚插入的数据的自动编码id,但是如果写成函数,在表现层我如何得到数据层这个值?我要如何把他作为参数再传到其他页面?
------解决方案--------------------再调下select max(id) from table
------解决方案--------------------肯定是用存储过程把 @@identity作为返回值
------解决方案--------------------declare @Pass int
insert into.............
set
@Pass = @@Identity
===========================
后台代码:
sqlparrimeter PASS= cmd.parrr.Add( "@Pass ",sqldaty.int);
PASS.Direction=ParrtesDirection.ReturnValue;
cmd.connection.close();
response.write(PASS.Value);//刚插入的id
------解决方案--------------------在存储过程中:
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
------解决方案--------------------up
------解决方案--------------------1。
Access 数据库?
2。
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow) SELECT @@IDENTITY AS 'ID ' "
——————————————————
Access 不支持批处理吧,只能一条条的来
3。
试试这样子:
sqlIns = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (?, ?, ?, ?, ?, ?) "
sqlSel = "select MAX(ProductID) from Product_Info "
' 事务开始
conn.Open()
Cmd = New OleDbCommand(sqlIns, conn)
Cmd.Parameters.Add( " ", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add( " ", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add( " ", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add( " ", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add( " ", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add( " ", OleDbType.Boolean).Value = IsShow
' 执行插入
Cmd.ExecuteNonQuery
Cmd.CommandText = sqlSel
Dim scalar as Object
' 读取刚插入的 ID
scalar = Cmd.ExecuteScalar
' 事务结束
'注意,这里需要显示开启事务,否则,你可能读到别人添加的数据
'我不熟悉 VB 语法,就不写事务了
4。
对于 OleDb , 不支持命令参数(如@ClassID这种), 只能使用占位符(用 ? 表示),并且按顺序匹配,因为 OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
Hope helpful!
------解决方案--------------------@@identity 这个是执行 插入操作才好用的返回插出的ID号 也就是最大ID
在AC中好不好用还真不知道。。用 max(id)吧
------解决方案--------------------INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)
//
SELECT top 1 id from userinfo order by id desc