Ciao a tutti!
Cercherò di essere il più breve possibile:
Io di norma programmo con una connessione sempre aperta al database MySQL e la mia programmazione è di norma piuttosto "libera" nell'eseguire i comandi dacchè non uso i dataset ma mi costruisco i comandi volta per volta!
Un esempio di insert:
codice:
dim mioCmd as new mysqlCommand("INSERT INTO miaTab (mioCampo1, mioCampo2) VALUES (@mioCampo1, @mioCampo2)",miaConn)
mioCmd.parameters.add("@mioCampo1",mysqlDBtype.VarChar).value="ciao"
mioCmd.parameters.add("@mioCampo2",mysqlDBtype.VarChar).value="mondo!"
try
mioCmd.executeNonQuery
catch ex as exception
msg(ex.message)
end try
e così via!
Adesso però (dopo aver letto un po ovunque che è meglio) mi sto provando a cimentare nella programmazione "disconnessa" ovvero all'apertura del programma mi connetto al DB e popolo un dataset tipizzato che ho creato all'interno del progetto e poi disconnetto la connessione!
Così mi trovo il DataSet con tutti i dati e posso lavorare OffLine per poi riaggiornare il dataBase quando ho finito!
Il mio primo dubbio/problema è:
Come gestisco le foreign key delle tabelle? Ci son varie relazioni tra le tabelle e di solito gestivo tutto con le transazioni (in modo da avere anche un rollback) e per ottenere l'ultimo id inserito usavo un nuovo comando MysqlCommand che eseguiva
codice:
SELECT LAST_INSERT_ID()
con
codice:
dim ultimoId as integer= mioCmd.executeScalar
Col dataset come faccio?
Io per inserire una nuova riga faccio così:
codice:
Dim miariga As DataRow = dsGlobale.miaTab.NewRow
miariga("ragioneCli") = "Veronica Demontis"
miariga("nomeCli") = "Veronica"
miariga("cognomeCli") = "Demontis"
miariga("cfCli") = "AAAAAAAAAAAAAAA"
dsGlobale.miaTab.Rows.Add(miariga)
e così ok mi ritrovo la riga nel dataset ma come ottengo l'id se non l'ha ancora messa nel db? L'id che mi servirà per i vari collegamenti tra tabelle!
Sono proprio a digiuno di questo medoto offline