public int GetAutoID(ref int testprocessID)
{
OpenConnection();
cm=new SqlCommand("select @@identity from testprocess",cn);
dr=cm.ExecuteReader();
if(dr.Read())
{
testprocessID=int.Parse(dr["@@identity"].ToString());
}
CloseConnection();
return testprocessID;
13 个解决方案
#1
返回一个@@identity
#2
怎么返回呢?给点代码好吗?
#3
用一个output参数:
代码:
#region Insert
private const string PROC_INSERT = "Information_Insert";
public bool Insert(InformationEntity entity)
{
SqlParameter[] parms = GetParametersForInsert();
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
parms[1].Value = DataUtility.FiltrateValue(entity.Title);
parms[2].Value = DataUtility.FiltrateValue(entity.Keyword);
parms[3].Value = DataUtility.FiltrateValue(entity.CreateDataTime);
parms[4].Value = DataUtility.FiltrateValue(entity.LastModifyDateTime);
parms[5].Value = DataUtility.FiltrateValue(entity.LastVisitDateTime);
parms[6].Value = DataUtility.FiltrateValue(entity.VisitTimes);
bool result = SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, PROC_INSERT, parms) == 1;
if(result)
{
entity.Id = (long)parms[0].Value;
}
return result;
}
Store Procedure:
CREATE PROCEDURE [Information_Insert]
@id bigint output,
@title nvarchar(200),
@keyword nvarchar(200),
@createDataTime datetime,
@lastModifyDateTime datetime,
@lastVisitDateTime datetime,
@visitTimes int
AS
INSERT INTO Information
(
[Title],
[Keyword],
[CreateDataTime],
[LastModifyDateTime],
[LastVisitDateTime],
[VisitTimes]
)
VALUES
(
@title,
@keyword,
@createDataTime,
@lastModifyDateTime,
@lastVisitDateTime,
@visitTimes
)
SET @id = SCOPE_IDENTITY()
GO
代码:
#region Insert
private const string PROC_INSERT = "Information_Insert";
public bool Insert(InformationEntity entity)
{
SqlParameter[] parms = GetParametersForInsert();
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
parms[1].Value = DataUtility.FiltrateValue(entity.Title);
parms[2].Value = DataUtility.FiltrateValue(entity.Keyword);
parms[3].Value = DataUtility.FiltrateValue(entity.CreateDataTime);
parms[4].Value = DataUtility.FiltrateValue(entity.LastModifyDateTime);
parms[5].Value = DataUtility.FiltrateValue(entity.LastVisitDateTime);
parms[6].Value = DataUtility.FiltrateValue(entity.VisitTimes);
bool result = SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, PROC_INSERT, parms) == 1;
if(result)
{
entity.Id = (long)parms[0].Value;
}
return result;
}
Store Procedure:
CREATE PROCEDURE [Information_Insert]
@id bigint output,
@title nvarchar(200),
@keyword nvarchar(200),
@createDataTime datetime,
@lastModifyDateTime datetime,
@lastVisitDateTime datetime,
@visitTimes int
AS
INSERT INTO Information
(
[Title],
[Keyword],
[CreateDataTime],
[LastModifyDateTime],
[LastVisitDateTime],
[VisitTimes]
)
VALUES
(
@title,
@keyword,
@createDataTime,
@lastModifyDateTime,
@lastVisitDateTime,
@visitTimes
)
SET @id = SCOPE_IDENTITY()
GO
#4
testprocessID=int.Parse(dr[0].ToString());
另外,"select @@identity from testprocess"要与另一个导致新@@identity被创建的SQL命令一起使用才行。
另外,"select @@identity from testprocess"要与另一个导致新@@identity被创建的SQL命令一起使用才行。
#5
用存储过程。。 返回的唯一数据集是通过select @@identity返回的
#6
使用testprocessID=int.Parse(dr[0].ToString());后提示说输入的字符串格式不正确^
#7
testprocessID=int.Parse(dr[0].ToString());
昨又变成字符型,又转回整形?
testprocessID=int.Parse(dr[0]);
这样不行?
昨又变成字符型,又转回整形?
testprocessID=int.Parse(dr[0]);
这样不行?
#8
我使用testprocessID=dr.GetInt32(0);也不行.
testprocessID=int.Parse(dr[0]);
都不行.只能用一楼仁兄的存储过程试一试了.
testprocessID=int.Parse(dr[0]);
都不行.只能用一楼仁兄的存储过程试一试了.
#9
TO:ubbii(培骏) ,你为什么要用parms[0].Value = DataUtility.FiltrateValue(entity.Id);
这个值不是自动递增的吗?
这个值不是自动递增的吗?
#10
没有看见插入操作在哪。而且应该用sqlcommand.executescalar方法返回一个值呀。
int i =Convert.ToInt32(cm.ExecuteScalar());
int i =Convert.ToInt32(cm.ExecuteScalar());
#11
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
DataUtility是什么意思啊,还有FiltrateValue(entity.Id)可以解释一下吗?
DataUtility是什么意思啊,还有FiltrateValue(entity.Id)可以解释一下吗?
#12
TO:tnt8csdn2000(Userful,我是假设已经插入好了,然后返回刚插入的ID,你的返回可以详细点吗?
解决了,这里的兄弟全部有分的,明天另开贴给你们加分.
解决了,这里的兄弟全部有分的,明天另开贴给你们加分.
#13
不好意思,刚才打错了,是这样的,parms[0]不应该赋值,直接设为Direction=ParameterDirection.Output,
Sql中,先用Insert插入记录,自增的列,SqlServer会自动赋值,
这时候可以用@@Identity或者SCOPE_IDENTITY得到刚才SqlServer自动给的那个值
(两者之间的区别可以参见SqlServer的帮助)
然后将这个值交给一个output参数就可以(SET @id = SCOPE_IDENTITY)
Sql中,先用Insert插入记录,自增的列,SqlServer会自动赋值,
这时候可以用@@Identity或者SCOPE_IDENTITY得到刚才SqlServer自动给的那个值
(两者之间的区别可以参见SqlServer的帮助)
然后将这个值交给一个output参数就可以(SET @id = SCOPE_IDENTITY)
#1
返回一个@@identity
#2
怎么返回呢?给点代码好吗?
#3
用一个output参数:
代码:
#region Insert
private const string PROC_INSERT = "Information_Insert";
public bool Insert(InformationEntity entity)
{
SqlParameter[] parms = GetParametersForInsert();
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
parms[1].Value = DataUtility.FiltrateValue(entity.Title);
parms[2].Value = DataUtility.FiltrateValue(entity.Keyword);
parms[3].Value = DataUtility.FiltrateValue(entity.CreateDataTime);
parms[4].Value = DataUtility.FiltrateValue(entity.LastModifyDateTime);
parms[5].Value = DataUtility.FiltrateValue(entity.LastVisitDateTime);
parms[6].Value = DataUtility.FiltrateValue(entity.VisitTimes);
bool result = SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, PROC_INSERT, parms) == 1;
if(result)
{
entity.Id = (long)parms[0].Value;
}
return result;
}
Store Procedure:
CREATE PROCEDURE [Information_Insert]
@id bigint output,
@title nvarchar(200),
@keyword nvarchar(200),
@createDataTime datetime,
@lastModifyDateTime datetime,
@lastVisitDateTime datetime,
@visitTimes int
AS
INSERT INTO Information
(
[Title],
[Keyword],
[CreateDataTime],
[LastModifyDateTime],
[LastVisitDateTime],
[VisitTimes]
)
VALUES
(
@title,
@keyword,
@createDataTime,
@lastModifyDateTime,
@lastVisitDateTime,
@visitTimes
)
SET @id = SCOPE_IDENTITY()
GO
代码:
#region Insert
private const string PROC_INSERT = "Information_Insert";
public bool Insert(InformationEntity entity)
{
SqlParameter[] parms = GetParametersForInsert();
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
parms[1].Value = DataUtility.FiltrateValue(entity.Title);
parms[2].Value = DataUtility.FiltrateValue(entity.Keyword);
parms[3].Value = DataUtility.FiltrateValue(entity.CreateDataTime);
parms[4].Value = DataUtility.FiltrateValue(entity.LastModifyDateTime);
parms[5].Value = DataUtility.FiltrateValue(entity.LastVisitDateTime);
parms[6].Value = DataUtility.FiltrateValue(entity.VisitTimes);
bool result = SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, PROC_INSERT, parms) == 1;
if(result)
{
entity.Id = (long)parms[0].Value;
}
return result;
}
Store Procedure:
CREATE PROCEDURE [Information_Insert]
@id bigint output,
@title nvarchar(200),
@keyword nvarchar(200),
@createDataTime datetime,
@lastModifyDateTime datetime,
@lastVisitDateTime datetime,
@visitTimes int
AS
INSERT INTO Information
(
[Title],
[Keyword],
[CreateDataTime],
[LastModifyDateTime],
[LastVisitDateTime],
[VisitTimes]
)
VALUES
(
@title,
@keyword,
@createDataTime,
@lastModifyDateTime,
@lastVisitDateTime,
@visitTimes
)
SET @id = SCOPE_IDENTITY()
GO
#4
testprocessID=int.Parse(dr[0].ToString());
另外,"select @@identity from testprocess"要与另一个导致新@@identity被创建的SQL命令一起使用才行。
另外,"select @@identity from testprocess"要与另一个导致新@@identity被创建的SQL命令一起使用才行。
#5
用存储过程。。 返回的唯一数据集是通过select @@identity返回的
#6
使用testprocessID=int.Parse(dr[0].ToString());后提示说输入的字符串格式不正确^
#7
testprocessID=int.Parse(dr[0].ToString());
昨又变成字符型,又转回整形?
testprocessID=int.Parse(dr[0]);
这样不行?
昨又变成字符型,又转回整形?
testprocessID=int.Parse(dr[0]);
这样不行?
#8
我使用testprocessID=dr.GetInt32(0);也不行.
testprocessID=int.Parse(dr[0]);
都不行.只能用一楼仁兄的存储过程试一试了.
testprocessID=int.Parse(dr[0]);
都不行.只能用一楼仁兄的存储过程试一试了.
#9
TO:ubbii(培骏) ,你为什么要用parms[0].Value = DataUtility.FiltrateValue(entity.Id);
这个值不是自动递增的吗?
这个值不是自动递增的吗?
#10
没有看见插入操作在哪。而且应该用sqlcommand.executescalar方法返回一个值呀。
int i =Convert.ToInt32(cm.ExecuteScalar());
int i =Convert.ToInt32(cm.ExecuteScalar());
#11
parms[0].Value = DataUtility.FiltrateValue(entity.Id);
DataUtility是什么意思啊,还有FiltrateValue(entity.Id)可以解释一下吗?
DataUtility是什么意思啊,还有FiltrateValue(entity.Id)可以解释一下吗?
#12
TO:tnt8csdn2000(Userful,我是假设已经插入好了,然后返回刚插入的ID,你的返回可以详细点吗?
解决了,这里的兄弟全部有分的,明天另开贴给你们加分.
解决了,这里的兄弟全部有分的,明天另开贴给你们加分.
#13
不好意思,刚才打错了,是这样的,parms[0]不应该赋值,直接设为Direction=ParameterDirection.Output,
Sql中,先用Insert插入记录,自增的列,SqlServer会自动赋值,
这时候可以用@@Identity或者SCOPE_IDENTITY得到刚才SqlServer自动给的那个值
(两者之间的区别可以参见SqlServer的帮助)
然后将这个值交给一个output参数就可以(SET @id = SCOPE_IDENTITY)
Sql中,先用Insert插入记录,自增的列,SqlServer会自动赋值,
这时候可以用@@Identity或者SCOPE_IDENTITY得到刚才SqlServer自动给的那个值
(两者之间的区别可以参见SqlServer的帮助)
然后将这个值交给一个output参数就可以(SET @id = SCOPE_IDENTITY)