利用存储过程得到新增数据的ID
数据库中有自增字段UID
存储过程如下:
CREATE PROCEDURE AddUser
(
@Username nvarchar(50),
@Email nvarchar(100),
@Password nvarchar(50),
@UserID int OUTPUT
)
AS
INSERT INTO Users
(
Username,
Email,
Password
)
VALUES
(
@Username,
@Email,
@Password
)
SELECT
@UserID = @@Identity
GO
程序如下:
SqlCommand cmd=new SqlCommand( "AddUser ",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter( "@Username ",Username));
cmd.Parameters.Add(new SqlParameter( "@Email ",Email));
cmd.Parameters.Add(new SqlParameter( "@Password ",Password));
然后如何得到刚刚插入记录的UID的值呢?
在这里我写不下去了,望大哥们指教.......
[解决办法]
indentdy UserID
CREATE PROCEDURE AddUser
(
@UserID int OUTPUT
@Username nvarchar(50),
@Email nvarchar(100),
@Password nvarchar(50),
)
[解决办法]
indentdy UserID
CREATE PROCEDURE AddUser
(
@UserID int ,
@Username nvarchar(50),
@Email nvarchar(100),
@Password nvarchar(50),
)
[解决办法]
SqlCommand cmd=new SqlCommand( "AddUser ",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter( "@Username ",Username));
cmd.Parameters.Add(new SqlParameter( "@Email ",Email));
cmd.Parameters.Add(new SqlParameter( "@Password ",Password));
cmd.parameters.add(new sqlparameter( "@UserID ",sqltype.int);
cmd.parameters[ "@userid "].direction = Direction.output;
CMD执行
int UID;
UID = cmd.Parameters[ "@userid "];
------解决方案--------------------
大致是这样的吧,你调试一下试试:
SqlCommand cmd = new SqlCommand( "AddUser ", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter( "@Username ", Username));
cmd.Parameters.Add(new SqlParameter( "@Email ", Email));
cmd.Parameters.Add(new SqlParameter( "@Password ", Password));
SqlParameter outPara = new SqlParameter( "@UserID ", SqlDbType.Int);
outPara.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outPara);
if (cmd.ExecuteNonQuery() > -1)
{
if (outPara.Value is int)
{
int retValue = (int)outPara.Value;
}
}
[解决办法]
命名空间???
这里是个属性哎...
你用的VS2005吗?
[解决办法]
SqlParameter.Direction 属性
获取或设置一个值,该值指示参数是只可输入、只可输出、双向还是存储过程返回值参数。
属性值
ParameterDirection 值之一。默认为 Input。
Input 参数是输入参数。
InputOutput 参数既能输入,也能输出。
Output 参数是输出参数。
ReturnValue 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。
[解决办法]
create table #
(
id int identity(1,1),
[value] int
)
insert into #([value]) values(100)
select scope_identity()
insert into #([value]) values(100)
select scope_identity()
insert into #([value]) values(100)
select scope_identity()
drop table #
[解决办法]
不知道,这个属性VS2003就是有的.
[解决办法]
using System.Data;
[解决办法]
别忘了 return 回value
[解决办法]
如果是这个具体的问题,根本就不需要输出参数和返回值!!!
CREATE PROCEDURE AddUser
(
@Username nvarchar(50),
@Email nvarchar(100),
@Password nvarchar(50),
)
AS
INSERT INTO Users
(
Username,
Email,
Password
)
VALUES
(
@Username,
@Email,
@Password
) ;SELECT @@Identity
GO
直接用获取单值的方法拿值就行了~~~ 就像 SELECT psw FROM Usr WHERE Uid = 'me ' 一样。