Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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# 如何获取刚刚插入的记录ID?_C#_Asp.net - Fatal编程技术网

C# 如何获取刚刚插入的记录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 +

我的表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

,您可以在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