Mat*_*ats 48 c# sql sql-server
我正在使用SqlCommand对象将记录插入到具有自动生成主键的表中.当我使用ExecuteScalar()方法时,如何编写命令文本以便获取新创建的ID?
Dav*_*kle 74
INSERT INTO YourTable(val1, val2, val3 ...)
VALUES(@val1, @val2, @val3...);
SELECT SCOPE_IDENTITY();
Run Code Online (Sandbox Code Playgroud)
不要忘记每个语句末尾的分号.
And*_*age 25
将以下行添加到Sql Query的末尾...
SELECT SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
然后在SqlCommand对象上使用ExecuteScalar方法......
var rowCount = command.ExecuteScalar()
Run Code Online (Sandbox Code Playgroud)
Jos*_*rke 16
insert into Yourtable()
values()
SELECT SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
我刚刚运行了测试,并使用SQL Server 2005 SP2和.Net 3.5验证了分号是可选的
将输出参数添加到命令对象,然后将值设置为存储过程中的新ID.
存储过程:
@ID AS INT OUTPUT
[Insert Command]
SET @ID = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
.净:
cmd.CommandText = "stored_procedure";
SqlParameter pID = new SqlParameter("ID", DBType.Int32, 4);
pID.Direction = ParameterDirection.Output;
cmd.ExecuteScalar();
int id = Convert.ToInt32(cmd.Parameters["ID"].Value.ToString());
Run Code Online (Sandbox Code Playgroud)