C# 如何获取刚刚插入的记录ID?
我的表ID是一个自动递增列,我想在插入记录时获取ID。我怎样才能做到 以下是我插入记录的方式:C# 如何获取刚刚插入的记录ID?,c#,asp.net,C#,Asp.net,我的表ID是一个自动递增列,我想在插入记录时获取ID。我怎样才能做到 以下是我插入记录的方式: ds.InsertCommand = "INSERT INTO Cases (pName,sDate,pAge,sAge,dAge,sex,status) VALUES ('" + pname.Text + "','" + sdate.Text + "'," + patAge.Text + "," + sage.Text + "," + dage.Text +
ds.InsertCommand = "INSERT INTO Cases (pName,sDate,pAge,sAge,dAge,sex,status)
VALUES ('" + pname.Text + "','" + sdate.Text + "'," + patAge.Text + "," + sage.Text + "," + dage.Text + ",'" + sex.SelectedValue + "','Draft')";
ds.Insert();
ds
是一个SqlDataSource
,您可以在insert语句之后进行选择
您还应该考虑使用插入参数的SQL参数来防止SQL注入攻击。
更新 由于您使用的是SqlDataSource,请查看。下面是一个使用参数的简化示例:<asp:SqlDataSource ID="ManageProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
InsertCommand=
"INSERT INTO [Products] ([ProductName], [UnitPrice], [Discontinued])
VALUES (@ProductName, @UnitPrice, @Discontinued); SELECT @ID = SCOPE_IDENTITY();">
<InsertParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
<asp:Parameter Name="ID" Type="Int" />
</InsertParameters>
</asp:SqlDataSource>
我还没有对此进行测试,但它应该足够近,可以让您走上正确的轨道。下面是一个很好的示例: 使用
SCOPE\u IDENTITY()
使用SQLCommand:
SqlCommand cmd = new SqlCommand("INSERT INTO Cases (pName,sDate,pAge,sAge,dAge,sex,status)
VALUES ('" + pname.Text + "','" + sdate.Text + "'," + patAge.Text + "," + sage.Text + "," + dage.Text + ",'" + sex.SelectedValue + "','Draft'); SELECT SCOPE_IDENTITY()";
int newRecordId = cmd.ExecuteScalar();
还值得注意的是,您应该参数化查询以避免SQL注入站点注意:始终使用以避免SQL注入…感谢您的重播,我是否必须将其添加到相同的
插入命令
。。您使用SQL参数是什么意思?非常感谢,我只是想确定一下,这是否适用于从控件获取的值?我知道了,但如何在.aspx.cs
文件中使用它?如果您需要从codebehind执行此操作,按照@Curt的回答。我看了一下,但不知道如何应用它。我应该使用SQLCommand
而不是ds.insertCommand
?