C# SQL/C获取受Insert影响的行的ID
我正在尝试实时获取受影响行的ID。我可以检查所使用的参数或最后一行,但我希望尽可能减少延迟,这样就不会有多个用户在表中混合信息 迄今为止:C# SQL/C获取受Insert影响的行的ID,c#,sql,tsql,stored-procedures,return,C#,Sql,Tsql,Stored Procedures,Return,我正在尝试实时获取受影响行的ID。我可以检查所使用的参数或最后一行,但我希望尽可能减少延迟,这样就不会有多个用户在表中混合信息 迄今为止: public int setFileInfo(string fileName, int filePrivacy, string filePassword, string fileDesc, string fileOwner) { using (SqlConnection conn = new SqlConnection(ConfigurationMa
public int setFileInfo(string fileName, int filePrivacy, string filePassword, string fileDesc, string fileOwner)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["bitRain"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("dbo.Upload", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
if(!String.IsNullOrEmpty(filePassword))
{
filePassword = FormsAuthentication.HashPasswordForStoringInConfigFile(filePassword, "MD5");
}
try
{
conn.Open();
cmd.Parameters.Add("@fileName", fileName);
cmd.Parameters.Add("@filePrivacy", filePrivacy);
cmd.Parameters.Add("@filePassword", filePassword);
cmd.Parameters.Add("@fileDescription", fileDesc);
cmd.Parameters.Add("@fileOwner", fileOwner);
int fileID = (int)cmd.ExecuteScalar();
return fileID;
}
catch (Exception ex)
{ }
finally
{
conn.Close();
}
return -1;
}
}
存储过程:
CREATE PROCEDURE [dbo].[Upload]
@fileName nvarchar(20),
@filePrivacy int,
@filePassword nvarchar(50),
@fileDescription nvarchar(200),
@fileOwner nvarchar(14)
AS
INSERT INTO Files ([FileName], FilePrivacy, FilePassword, FileDescription, FileOwner)
VALUES (@fileName, @filePrivacy, @filePassword, @fileDescription, @fileOwner)
RETURN 0
CREATE PROCEDURE [dbo].[Upload]
@fileName nvarchar(20),
@filePrivacy int,
@filePassword nvarchar(50),
@fileDescription nvarchar(200),
@fileOwner nvarchar(14),
@id int out
AS
INSERT INTO Files ([FileName], FilePrivacy, FilePassword, FileDescription, FileOwner)
VALUES (@fileName, @filePrivacy, @filePassword, @fileDescription, @fileOwner)
set @id = SCOPE_IDENTITY()
END
我需要一些输出参数,但我不知道如何使用它,而且msdn示例对我来说不够清楚。存储过程:
CREATE PROCEDURE [dbo].[Upload]
@fileName nvarchar(20),
@filePrivacy int,
@filePassword nvarchar(50),
@fileDescription nvarchar(200),
@fileOwner nvarchar(14)
AS
INSERT INTO Files ([FileName], FilePrivacy, FilePassword, FileDescription, FileOwner)
VALUES (@fileName, @filePrivacy, @filePassword, @fileDescription, @fileOwner)
RETURN 0
CREATE PROCEDURE [dbo].[Upload]
@fileName nvarchar(20),
@filePrivacy int,
@filePassword nvarchar(50),
@fileDescription nvarchar(200),
@fileOwner nvarchar(14),
@id int out
AS
INSERT INTO Files ([FileName], FilePrivacy, FilePassword, FileDescription, FileOwner)
VALUES (@fileName, @filePrivacy, @filePassword, @fileDescription, @fileOwner)
set @id = SCOPE_IDENTITY()
END
在cs中添加
cmd.Parameters["@id"].Direction = ParameterDirection.Output;
尝试使用函数您要查找的答案就在本页上检查相关部分的第一个链接可能重复,从相关列表到右侧,列表底部有第三个链接。请至少在网站上搜索现有答案,并查看输入您的答案时出现的可能相关问题列表,以查看该问题是否已在此处被询问和回答。谢谢。@KenWhite我做了搜索,我只是没有找到它与我的代码有什么相似之处,因为我会使用它,并且从中获得与以前相同的知识。也许我没有正确地阅读它们。似是而非。@evilmonstah:我链接的两个问题都涉及存储过程和值,一个实际上是返回值,另一个是刚刚插入的行中的值。它们在右侧的相关列表中也清晰可见,其中大部分都会在您键入问题时显示给您:在单击问题的“提交”按钮之前,您始终可以右键单击链接并在新浏览器或窗口中打开以查看其是否适用。@KenWhite我承认这是重复的,正如您所说,我看到了一些问题,但我没有从中学习,我的错误是没有更多地关注问题和答案本身但我了解到我错了,这是实现这个方法的一个简单方法,我无法从其他人的例子或代码中理解。