如何获取刚刚插入的记录ID
本文关键字:插入 记录 ID 何获取 获取 | 更新日期: 2023-09-27 18:25:09
我的表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 + ",'" + sex.SelectedValue + "','Draft')";
ds.Insert();
ds
是SqlDataSource
您可以在插入语句后选择SCOPE_IDENTITY
。
您还应该考虑将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_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注入
这里有一个很好的例子:
示例