INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name) SELECT @@IDENTITY AS ID
来得到刚插入的数据的自动编码id,但是如果写成函数,在表现层我如何得到数据层这个值?我要如何把他作为参数再传到其他页面?
35 个解决方案
#1
再调下select max(id) from table
#2
作为函数返回值呀
#3
肯定是用存储过程把 @@identity作为返回值
#4
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.............
set
@Pass = @@Identity
===========================
后台代码:
sqlparrimeter PASS= cmd.parrr.Add("@Pass",sqldaty.int);
PASS.Direction=ParrtesDirection.ReturnValue;
cmd.connection.close();
response.write(PASS.Value);//刚插入的id
#5
在存储过程中:
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
#6
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Integer
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow) SELECT @@IDENTITY AS 'ID'"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Dim ID As Integer
Try
ID = Int(Convert.ToInt32(Cmd.ExecuteScalar))
conn.Close()
Return ID
Catch ex As Exception
End Try
End Function
ACCESS数据库来的。 这样返回是0.。。。哪里错了?
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow) SELECT @@IDENTITY AS 'ID'"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Dim ID As Integer
Try
ID = Int(Convert.ToInt32(Cmd.ExecuteScalar))
conn.Close()
Return ID
Catch ex As Exception
End Try
End Function
ACCESS数据库来的。 这样返回是0.。。。哪里错了?
#7
up
#8
up
#9
路过~~
#10
急啊。。帮帮我。
#11
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!
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!
#12
因为 OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
》》》
因此, OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
》》》
因此, OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
#13
1. 是access数据库
2. Access 支持批处理
3.因为只是一个人操作数据库,所以可以不用事务。
4.OleDb , 不支持命令参数(如@ClassID这种) 这个不明白你的意思。 我用这样的在acess是可以的。
2. Access 支持批处理
3.因为只是一个人操作数据库,所以可以不用事务。
4.OleDb , 不支持命令参数(如@ClassID这种) 这个不明白你的意思。 我用这样的在acess是可以的。
#14
@@identity 这个是执行 插入操作才好用的返回插出的ID号 也就是最大ID
在AC中好不好用还真不知道。。用 max(id)吧
在AC中好不好用还真不知道。。用 max(id)吧
#15
max(id) 是读出最大id那整条记录吗?
我刚用max试了。返回来怎么老说id不是表中的字段?
我刚用max试了。返回来怎么老说id不是表中的字段?
#16
终于搞定了。谢谢:Jinglecat(晓风残月)
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Object
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow)"
Dim AccessSel As String
AccessSel = "select MAX(ID) from Product_Info"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Cmd.ExecuteNonQuery()
Cmd.CommandText = AccessSel
Dim scalar As Object
scalar = Cmd.ExecuteScalar
conn.Close()
Return scalar
End Function
另外我把这个ID存入interg变量中,在Response.Write中要如何把这个ID做为参数传出去?
Response.Write("<a href='addmore.aspx?id=id'>添加更多图片</a>")
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Object
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow)"
Dim AccessSel As String
AccessSel = "select MAX(ID) from Product_Info"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Cmd.ExecuteNonQuery()
Cmd.CommandText = AccessSel
Dim scalar As Object
scalar = Cmd.ExecuteScalar
conn.Close()
Return scalar
End Function
另外我把这个ID存入interg变量中,在Response.Write中要如何把这个ID做为参数传出去?
Response.Write("<a href='addmore.aspx?id=id'>添加更多图片</a>")
#17
INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)
//
SELECT top 1 id from userinfo order by id desc
//
SELECT top 1 id from userinfo order by id desc
#18
http://blog.joycode.com/ghj/archive/2004/03/21/16745.aspx
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
#19
在存储过程中:
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
--------------------------------
高效、稳定、双线(电信、网通)任选择,提供预先免费测试3天。
http://www.dataweb.cn
QQ:42836192
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
--------------------------------
高效、稳定、双线(电信、网通)任选择,提供预先免费测试3天。
http://www.dataweb.cn
QQ:42836192
#20
lz考虑到并发性问题了么?
总感觉没用事务,不是很放心
#21
up
#22
如果是SQL的话,最简单,在触发器里解决。
select @@Identity
好像这样就可以了。
用insert ..直接返回记录集
就能得到了
select @@Identity
好像这样就可以了。
用insert ..直接返回记录集
就能得到了
#23
学习!
#24
up
#25
收藏!!!
#26
出参
#27
mark
#28
学习
#29
@@identity
#30
用存储过程可以咯
#31
应该使用 SCOPE_IDENTITY, 而不是@@identity
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。
假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。
@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。
SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。
假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。
@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。
SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
#32
如果插入主键的编号不是自动递增的 而是随机生成的Nvarchar型
如何返回主键 谢谢
如何返回主键 谢谢
#33
你的nvarchar主见是你自己插入进去的,这个值还有必要返回吗?
#34
查询最大id。当然为了避免并发,要使用线程同步
#35
要是插入id不是int类型呢.是文本类型的.比如说是:XFGUID:uniqueidentifier
#1
再调下select max(id) from table
#2
作为函数返回值呀
#3
肯定是用存储过程把 @@identity作为返回值
#4
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.............
set
@Pass = @@Identity
===========================
后台代码:
sqlparrimeter PASS= cmd.parrr.Add("@Pass",sqldaty.int);
PASS.Direction=ParrtesDirection.ReturnValue;
cmd.connection.close();
response.write(PASS.Value);//刚插入的id
#5
在存储过程中:
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
#6
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Integer
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow) SELECT @@IDENTITY AS 'ID'"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Dim ID As Integer
Try
ID = Int(Convert.ToInt32(Cmd.ExecuteScalar))
conn.Close()
Return ID
Catch ex As Exception
End Try
End Function
ACCESS数据库来的。 这样返回是0.。。。哪里错了?
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow) SELECT @@IDENTITY AS 'ID'"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Dim ID As Integer
Try
ID = Int(Convert.ToInt32(Cmd.ExecuteScalar))
conn.Close()
Return ID
Catch ex As Exception
End Try
End Function
ACCESS数据库来的。 这样返回是0.。。。哪里错了?
#7
up
#8
up
#9
路过~~
#10
急啊。。帮帮我。
#11
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!
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!
#12
因为 OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
》》》
因此, OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
》》》
因此, OleDbCommand.Parameters 的添加顺序要与你 SQL 的顺序一致
#13
1. 是access数据库
2. Access 支持批处理
3.因为只是一个人操作数据库,所以可以不用事务。
4.OleDb , 不支持命令参数(如@ClassID这种) 这个不明白你的意思。 我用这样的在acess是可以的。
2. Access 支持批处理
3.因为只是一个人操作数据库,所以可以不用事务。
4.OleDb , 不支持命令参数(如@ClassID这种) 这个不明白你的意思。 我用这样的在acess是可以的。
#14
@@identity 这个是执行 插入操作才好用的返回插出的ID号 也就是最大ID
在AC中好不好用还真不知道。。用 max(id)吧
在AC中好不好用还真不知道。。用 max(id)吧
#15
max(id) 是读出最大id那整条记录吗?
我刚用max试了。返回来怎么老说id不是表中的字段?
我刚用max试了。返回来怎么老说id不是表中的字段?
#16
终于搞定了。谢谢:Jinglecat(晓风残月)
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Object
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow)"
Dim AccessSel As String
AccessSel = "select MAX(ID) from Product_Info"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Cmd.ExecuteNonQuery()
Cmd.CommandText = AccessSel
Dim scalar As Object
scalar = Cmd.ExecuteScalar
conn.Close()
Return scalar
End Function
另外我把这个ID存入interg变量中,在Response.Write中要如何把这个ID做为参数传出去?
Response.Write("<a href='addmore.aspx?id=id'>添加更多图片</a>")
Public Function AddData(ByVal ClassID As Integer, ByVal Name As String, ByVal Content As String, ByVal ImgUrlBig As String, ByVal ImgUrlSml As String, ByVal IsShow As Boolean) As Object
Access = "insert into Product_Info (ClassID, Name, Content, ImgUrlBig, ImgUrlSml, IsShow) values (@ClassID, @Name, @Content, @ImgUrlBig, @ImgUrlSml, @IsShow)"
Dim AccessSel As String
AccessSel = "select MAX(ID) from Product_Info"
conn.Open()
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add("@ClassID", OleDbType.Integer).Value = ClassID
Cmd.Parameters.Add("@Name", OleDbType.VarChar).Value = Name
Cmd.Parameters.Add("@Content", OleDbType.VarChar).Value = Content
Cmd.Parameters.Add("@ImgUrlBig", OleDbType.VarChar).Value = ImgUrlBig
Cmd.Parameters.Add("@ImgUrlSml", OleDbType.VarChar).Value = ImgUrlSml
Cmd.Parameters.Add("@IsShow", OleDbType.Boolean).Value = IsShow
Cmd.ExecuteNonQuery()
Cmd.CommandText = AccessSel
Dim scalar As Object
scalar = Cmd.ExecuteScalar
conn.Close()
Return scalar
End Function
另外我把这个ID存入interg变量中,在Response.Write中要如何把这个ID做为参数传出去?
Response.Write("<a href='addmore.aspx?id=id'>添加更多图片</a>")
#17
INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)
//
SELECT top 1 id from userinfo order by id desc
//
SELECT top 1 id from userinfo order by id desc
#18
http://blog.joycode.com/ghj/archive/2004/03/21/16745.aspx
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
#19
在存储过程中:
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
--------------------------------
高效、稳定、双线(电信、网通)任选择,提供预先免费测试3天。
http://www.dataweb.cn
QQ:42836192
Insert into Users(UserName,UserPwd,InsertTime)
values(@UserName,@UserPwd,getdate())
select @Id = @@IDENTITY
@Id就是刚插入的主键id
--------------------------------
高效、稳定、双线(电信、网通)任选择,提供预先免费测试3天。
http://www.dataweb.cn
QQ:42836192
#20
lz考虑到并发性问题了么?
总感觉没用事务,不是很放心
#21
up
#22
如果是SQL的话,最简单,在触发器里解决。
select @@Identity
好像这样就可以了。
用insert ..直接返回记录集
就能得到了
select @@Identity
好像这样就可以了。
用insert ..直接返回记录集
就能得到了
#23
学习!
#24
up
#25
收藏!!!
#26
出参
#27
mark
#28
学习
#29
@@identity
#30
用存储过程可以咯
#31
应该使用 SCOPE_IDENTITY, 而不是@@identity
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。
假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。
@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。
SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。
假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。
@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。
SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数,则该函数将返回 NULL 值。
#32
如果插入主键的编号不是自动递增的 而是随机生成的Nvarchar型
如何返回主键 谢谢
如何返回主键 谢谢
#33
你的nvarchar主见是你自己插入进去的,这个值还有必要返回吗?
#34
查询最大id。当然为了避免并发,要使用线程同步
#35
要是插入id不是int类型呢.是文本类型的.比如说是:XFGUID:uniqueidentifier