Aggiungere righe

giovedì 05 gennaio 2006 - 21.03

diska Profilo | Newbie

ciao a tutto come faccio ad aprire una tabella e aggiungere righe?


in vb6 usa to

conn.open ...


rs.open "tabella",conn

rs.addnew ...


non voglio usare insert ecce cc

Cteniza Profilo | Guru

Beh quello che sapevi con vb6 "tienlo buono solo per i ricordi".
La maggiore variazione (o almeno il maggiore impatto) per vb.net è appunto la gestione dei dati.
Ti consiglio di prendere un buon manuale di ADO.NET (quello di Sheppa o quello della Wrox ad esempio) e guardare gli esempi che trovi presso microsoft o gli innumerevoli siti che parlano di .NET e/o di ADO.NET.
Tanto per rispondere alla tua domanda uno dei modi di aggiungere una riga è (ammettendo di non avere gestito il binding):
Dim dr As DataRow = myTable.NewRow()
dr("codice") = TextBox1.Text
dr("Descrizione") = TextBox2.Text
myTable.Rows.Add(dr)


diska Profilo | Newbie

ok fin qui c'ero arrivato anche io


il mio prob è questo

come faccio a dire che quella tabella è la mia tabella sul db?

a collegarla a una connessione insomma.

e soprattutto a fare l'update della tabella "disconnessa" sulla tabella "su disco"

Cteniza Profilo | Guru

Renditi conto che l'argomento è troppo vasto per essere espresso in una risposta.
Dim ds As DataSet
ds = New DataSet("Dati")
Dim cn As New OleDbConnection("Provider ...")
Dim cm As New OleDbCommand("SELECT ...",cn)
Dim da As New OleDbDataAdapter()
da.SelectCommand = cm
Dim cmb As New OleDbCommandBuilder(da)
da.Fill(ds,"myTable")
....
Fai i tuoi inserimenti alla fine dei quali per riscrivere nel database le variazioni:
da.Update(ds)

diska Profilo | Newbie


Dim conn As New System.Data.SqlClient.SqlConnection

Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder()

builder.DataSource = ".\SQLEXPRESS"
builder.AttachDBFilename = "|DataDirectory|ASPNETDB.MDF"
builder.IntegratedSecurity = True
builder.UserID = "server\user"
builder.UserInstance = True



conn.ConnectionString = builder.ConnectionString


conn.Open()

Dim adap As New System.Data.SqlClient.SqlDataAdapter("select * from vettore ", conn)

Dim ds As New System.Data.DataSet()

adap.Fill(ds, "vettore")

Dim tmpv As System.Data.DataRow

Dim tbvettore As New System.Data.DataTable

tbvettore = ds.Tables("vettore")




For i = 0 To vett_valori.GetUpperBound(0) - 1
If (vett_valori(i) <> 0) Then
tmpv = tbvettore.NewRow()
tmpv("indice") = i
tmpv("valore") = vett_valori(i)


tbvettore.Rows.Add(tmpv)
End If
Next i

qui ho provato sia con


adap.Update(ds)


sia con

adap.Update(ds."vettore")




mi da "Update unable to find TableMapping['Table'] or DataTable 'Table'."


diska Profilo | Newbie

ecco la parte mancante da usare prima di richiamare l'update

Dim sqlcb As New System.Data.SqlClient.SqlCommandBuilder(adap)

'sqlcb.DataAdapter = adap

adap.UpdateCommand = sqlcb.GetUpdateCommand()

adap.InsertCommand = sqlcb.GetInsertCommand()

'adap.DeleteCommand = sqlcb.GetDeleteCommand()

Cteniza Profilo | Guru

Se usi il commandbuilder non serve utilizzare i getcommands, quindi li puoi togliere.
Per scrivere nel tuo dataset/datatable hai l'oggetto datarow, collection che appartiene alla datatable (che a sua volta è una collection che appartiene al dataset).
Quindi per inserire dei dati nel dataset / datatable:
Dim dr As DataRow = myDataset.Tables("mytable").NewRow
dr("campo1") = valore
dr("campo2") = valore
myDataSet.Tables("myTable").Rows.Add(dr)
Per modificare una riga:
Dim dr As DataRow = myDataset.Tables("mytable").Rows(0) 'modifica la prima riga
dr("campo1") = valore
Per cancellare una riga
myDataSet.Tables("myTable").Rows(0).Delete() ' cancella la prima riga
Poi per riversare le modifiche sul database origine dati devi fare:
myDataAdapter.Update(myDataSet)



diska Profilo | Newbie

molte grazie una cosa come faccio a dire che la mia tabella ne dataset esiste e non la creo?


se so che voglio solo inserire dei dati come devo impostare il dataadapter?

io per ora ho messo la select con un where sempre falso cosi mi da una tabella vuota e faccio gli add :D visto che non mi servono i dati già presenti in memoria

Cteniza Profilo | Guru

1) verificare già esistente prima di inserimento
(avviso che ci sono anche altri metodi)
Dim dr() As DataRow = myDataSet.Tables("myTable").Select("CampoChiave = " & TextBox1.Text)
If Not dr Is Nothing Then
MessageBox.Show(".... esistente")
End If
2) fare anche le variazioni
Per prima cosa devi generare il dataadapter in tutti i suoi command
alternative (dalla più difficile alla più facile)
- scrivi nel tuo programma il codice per i comandi SQL SELECT UPDATE, INSERT, DELETE rispettivamente per SelectCommand, UpdateCommand, InsertCommand, DeleteCommand (naturalmente completi di connessione e parametri)
- scrivi nel tuo dataadapter il tuo SelectCommand (solo il testo del comando), definisci un CommandBuilder e poi usi i 3 comandi "GetUpdateCommand, GetInsertCommand, GetDeleteCommand" per generare i rispettivi comandi del dataadapter.
- scrivi nel tuo dataadapter il tuo SelectCommand e poi lo dai in pasto al commandbuilder:
Dim cmb As new SqlCommandBuilder(myDataAdapter)

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