[VB.NET] Inserire un nuovo record

domenica 10 febbraio 2008 - 17.53

marco.santilli Profilo | Junior Member

Per inserire un nuovo record posso seguire questa sintassi:

Dim command As New OleDb.OleDbCommand
command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD) VALUES(?,?)", Conn)

command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value = Me.txtTitolo.Text
command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
command.ExecuteNonQuery()

-------------------------------------------------------------

cosi facendo scrivo direttamente nel DB, però se ho una griglia con i dati non mi vengono agiornati.

Oppure posso inserire un nuovo record nel dataset e poi fare l'UPDATE di tutto il dataset

1) Come faccio nel primo casa ad aggirornare una griglia inserendo direttamente il record nel DB
2) Qual'è la strada migliore per inserire un nuovo record?? Scriverlo direttamente nel db oppure salvarlo nel dataset e aggiornare il tutto.

Ciao e grazieeeeeeeeeeee

SSUPERPIPPO Profilo | Guru

>Per inserire un nuovo record posso seguire questa sintassi:
>
> Dim command As New OleDb.OleDbCommand
>command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD)
>VALUES(?,?)", Conn)
>
>command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value =
>Me.txtTitolo.Text
>command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
> command.ExecuteNonQuery()
>
>-------------------------------------------------------------
>
>cosi facendo scrivo direttamente nel DB, però se ho una griglia
>con i dati non mi vengono agiornati.
>
>Oppure posso inserire un nuovo record nel dataset e poi fare
>l'UPDATE di tutto il dataset
>
>1) Come faccio nel primo casa ad aggirornare una griglia inserendo
>direttamente il record nel DB
>2) Qual'è la strada migliore per inserire un nuovo record?? Scriverlo
>direttamente nel db oppure salvarlo nel dataset e aggiornare
>il tutto.
>
>Ciao e grazieeeeeeeeeeee

Uno dei grandi vantaggi dati dall'utilizzo dei dataset è il fatto che quando tu inserisci, modifichi, elimini record dal DataTable (anche attraverso un DataGridView), le modifiche non si riperquotono immediatamente sul Database fisico, fino a quando non viene richiamato il metodo Update del DataAdapter.

Se tu agisci direttamente sul Database anzichè modificare il DataTable, il DataGridView non si aggiorna automaticamente in quanto collegato al DataSet lato client che non è direttamente sincronizzato.
Per aggiornare il DataGridView in tal caso devi distruggere il DataSet ad esso collegato e ricreare nuovamente il DataTable con i dati aggiornati e rieseguire il binding.

La via migliore in questo caso, sarebbe quella di inserire il nuovo record sul DataSet e non sul DataBase fisico in questo modo:


Dim NewRow as DataRow=TuoDataSet.Tables("TuaTable").Rows.Add NewRow.Item("Titolo") = "NuovoTitolo" NewRow.Item("NCD") = "NCD" NewRow.EndEdit()

in questo modo vedrai che la modifica si ripercuote direttamente sul DataGridView collegato.
Si riperquoterà sul database fisico solo quando richiamerai il metodo Update del DataAdapter usato per popolare il DataSet (Fill)

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

marco.santilli Profilo | Junior Member

Visto che ci siamo mi dici come fare update del dataset per aggiornare i dati nel DB


In pratica inserisco il nuovo record nel dataset con la sintassi che mi haì scritto sopra

Ora devo riportare tutto nel DB, mi scrive anche UPDATE, cosi provo il tutto

Ciao e grazieeeeee

SSUPERPIPPO Profilo | Guru

Sul mio blog (link sotto), trovi una classe già pronta per la gestione degli accessi al database semplificata.
Dagli un'occhiata, ci trovi tutto quello che ti ho detto prima...

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5