Mój identyfikator tabeli to kolumna z automatycznym przyrostem, chcę uzyskać identyfikator po wstawieniu rekordu. jak mogę to zrobić?

Tak wstawiam rekord:

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 to SqlDataSource

0
Meensat 17 luty 2012, 19:26

2 odpowiedzi

Po instrukcji wstawiania możesz wybrać SCOPE_IDENTITY.

Należy również rozważyć użycie parametrów SQL dla wartości wstawiania, aby zapobiec atakom typu SQL injection.

Aktualizacja

Ponieważ używasz SqlDataSource, spójrz na ten samouczek. Oto skrócony przykład z użyciem parametrów:

<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>

Nie testowałem tego, ale powinno być wystarczająco blisko, aby naprowadzić cię na właściwy tor.

8
jrummell 17 luty 2012, 20:03

Oto dobry przykład:

przykład

1
Etch 17 luty 2012, 19:29