日期:2014-05-18  浏览次数:20436 次

怎样得到刚插入数据库的记录的主键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