Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行insert语句并将id放入局部变量?_C#_Sql Server - Fatal编程技术网

C# 执行insert语句并将id放入局部变量?

C# 执行insert语句并将id放入局部变量?,c#,sql-server,C#,Sql Server,是否有方法返回自动生成的新行ID并将其放入局部变量中 提前多谢了, 阿德里安使用 SqlDataSource myQuiz = new SqlDataSource(); myQuiz.ConnectionString = ConfigurationManager.ConnectionStrings["yafnet"].ToString(); myQuiz.InsertCommand = "INSERT INTO [QuizTable]([Quiz_Title],[Quiz_Descriptio

是否有方法返回自动生成的新行ID并将其放入局部变量中

提前多谢了, 阿德里安使用

SqlDataSource myQuiz = new SqlDataSource();

myQuiz.ConnectionString = ConfigurationManager.ConnectionStrings["yafnet"].ToString();
myQuiz.InsertCommand = "INSERT INTO [QuizTable]([Quiz_Title],[Quiz_Description]) VALUES (@Quiz_Title,@Quiz_Description)";

myQuiz.InsertParameters.Add("Quiz_Title",Quiz_Title.Text);
myQuiz.InsertParameters.Add("Quiz_Description",Quiz_Description.Text);

myQuiz.Insert();
Response.Redirect("QuizQuests.aspx");
它返回表中生成的最后一个标识值,而不管创建该值的连接如何,也不管生成该值的语句的范围如何。 当前标识不受范围和会话的限制;它仅限于指定的表。IDENT_CURRENT返回在任何会话和任何作用域中为特定表生成的标识值。

使用

SqlDataSource myQuiz = new SqlDataSource();

myQuiz.ConnectionString = ConfigurationManager.ConnectionStrings["yafnet"].ToString();
myQuiz.InsertCommand = "INSERT INTO [QuizTable]([Quiz_Title],[Quiz_Description]) VALUES (@Quiz_Title,@Quiz_Description)";

myQuiz.InsertParameters.Add("Quiz_Title",Quiz_Title.Text);
myQuiz.InsertParameters.Add("Quiz_Description",Quiz_Description.Text);

myQuiz.Insert();
Response.Redirect("QuizQuests.aspx");
它返回表中生成的最后一个标识值,而不管创建该值的连接如何,也不管生成该值的语句的范围如何。
当前标识不受范围和会话的限制;它仅限于指定的表。IDENT_CURRENT返回在任何会话和任何作用域中为特定表生成的标识值。

@Adrian De Barro:hi您可以使用以下代码获取插入的记录id并保存在变量中

在sqlquery中添加以下语句:

SELECT IDENT_CURRENT(‘QuizTable’)
您的C#代码如下:

return @@IDENTITY

@阿德里安·德巴罗:您好,您可以使用以下代码来获取插入的记录id并保存在变量中

在sqlquery中添加以下语句:

SELECT IDENT_CURRENT(‘QuizTable’)
您的C#代码如下:

return @@IDENTITY

如果您想100%确定您在实际的
QuizTable
中插入的内容确实得到了标识,您应该使用
SCOPE\u identity()
(正如Luiggi Mendoza在其评论中提到的那样),而不是
@@identity
IDENT\u CURRENT

@@IDENTITY
可能不起作用,因为。因此,如果在
QuizTable
上有一个触发器,它在另一个表中插入了一行,该表也有一个标识列,
@@identity
将返回第二次插入的值,而不是原始插入到
QuizTable
中的值

IDENT_CURRENT
将返回表的最后一个标识值(并且只返回表的标识值,因此是否存在上一示例中的触发器无关紧要)。

但它返回任何会话的最后一个标识值。因此,如果在您的
INSERT
和您的
IDENT_CURRENT
之间的另一个会话中插入了另一行,

如果您想100%确保在实际的
QuizTable
中插入的内容确实获得了身份,您应该使用
SCOPE_identity(),而不是
@@IDENTITY
IDENT\u CURRENT

@@IDENTITY
可能不起作用,因为。因此,如果在
QuizTable
上有一个触发器,它在另一个表中插入了一行,该表也有一个标识列,
@@identity
将返回第二次插入的值,而不是原始插入到
QuizTable
中的值

IDENT_CURRENT
将返回表的最后一个标识值(并且只返回表的标识值,因此是否存在上一示例中的触发器无关紧要)。

但它返回任何会话的最后一个标识值。因此,如果在您的
INSERT
和您的
IDENT_CURRENT
之间的另一个会话中插入另一行,

在您的C#code中执行:在您的C#code中执行:但是如果另一个会话在插入之后,但在您的
IDENT#u CURRENT
调用之前,在
中插入
QuizTable
,您将获得另一个insert的标识值,而不是您的(有关详细信息,请参阅),但是如果另一个会话在您的insert之后,但在您的
IDENT_CURRENT
调用之前,插入到
QuizTable
中,您将获得另一个insert的标识值,而不是您的(有关详细信息,请参阅)