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