Anche lavorando su ASPX con VB si può avere la necessità di inserire un record e avere immediatamente il suo ID identity inserito. Parliamo di database MsSql.

Ecco come ho risolto:

Prima di tutto la funzione per le operazioni sul DB inserita nelle classi di sistema

 Public Shared Function getDT(connectionstringName As String, strSQL As String) As Data.DataTable
        Dim dt As New Data.DataTable
        Dim cn As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings(connectionstringName).ConnectionString)
        cn.Open()
        Try
            Dim cmdSQL As New Data.SqlClient.SqlCommand(strSQL, cn)
            Dim d As New Data.SqlClient.SqlDataAdapter(cmdSQL)
            dt = New Data.DataTable
            d.Fill(dt)
        Catch
        End Try
        cn.Close()
        cn = Nothing
        Return dt
    End Function

Quindi vado a fare sul mio file ASPX l’inserimento:

Dim DTRead As New System.Data.DataTable
Dim IDRichiestaDET As String = ""
DTRead = Void.cSQLHelper.getDT("CMCConnectionString", "insert into WEB_MYTABLE (Campo)VALUES('ciao'); SELECT SCOPE_IDENTITY() as id")
IDRichiestaDET = DTRead.Rows(0).Item("id")

Ho usato SELECT SCOPE_IDENTITY() as id per ricevere dall’SQL subito il valore inserito che poi ho letto trattando la query di insert come una select.

A questo punto è bastato leggere l’ID come una normale colonna della tabella: IDRichiestaDET = DTRead.Rows(0).Item(“id”)

Tags: