Newsgroup: it.comp.lang.visual-basic
Titolo: Dati da Matrice a DB: chi ha un'idea geniale?

 
          Ho una matrice su cui ho caricato dei dati che devo trasferire in un DB
(ADO). La cosa più ovvia che mi è venuta in mente è di fare un ciclo su
tutti i record della matrice e creare per ogniuno una stringa SQL
"INSERT INTO tabella (campo_a, campo_b , ....) VALUES (' "& MiaMatrice.a &
"', ....)"
e fare la relativa esecuzione MioDB.Execute StringaSQL.
Come sistema è semplice ma non particolarmente spedito. Qualcuno di voi ha
già affrontato questo problema, trovando qualche soluzione "furba" (questa
espressione la usava qualche mio prof all'università... mi faceva schifo
allora, e pure adesso non mi piace un granchè...mah!)
Ciao!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ciao!

-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Hai provato aprendo una transazione e lanciando il commit ogni 1000
record?
Con un codice del tipo:
Connessione.BeginTrans
NumeroRighe = 0
Do
  NumeroRighe = NumeroRighe + 1
  if NumeroRighe mod 1000 = 0 then 
  ' Chiudo la transazione corrente...
  Connessione.CommitTrans
  ' ...e ne apro una nuova
  Connessione.BeginTrans
  end if
  <inserimento>
Loop
Connessione.CommitTrans
Bye by SixaM 8-]
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 tua soluzione...
Penso anch'io! E poi MySQL mi ha dato dei problemi con AddNew, quindi mi
sono buttato sull'SQL per essere sicuro di avere la flessibilità necessaria!


 Connessione.CommitTrans
NO, non ho provato perchč con la connessione tramite OLE DB MySQL non
supporta le Transazioni. Potrei provare con l'ODBC, perň... L'inserimento lo
faresti sempre tramite SQL?


                    Il 27 Lug 2004, 13:56, 
SPAMMATEVOSTRA...@libero.it
 (BlueMammuth)
ha scritto:

OK, con l'ODBC funziona (ed č effettivamente un po' piů veloce): ma qual'č
la diferenza fondamentale tra le due tecniche? Cosa significa, cioč, nella
pratica effettuare una Transazione? Mi sta un po' sulle palle fare una cosa
senza sapere cos'č!!!
Altra domanda: cosa accade se aumento o diminuisco il numero di accodamenti
per ogni Transazione? Ad esempio: se faccio la ComitTrans ogni 100 elemanti
piuttosto che ogni 10000 che cambia?


 piuttosto che ogni 10000 che cambia?
Sono tornato all'ODBC per usare BeginTrans e ComitTrans, e a questo punto ho
pensato bene di rispolverare pure l'AddNew/UpDate per vedere se riuscivo a
rosicchiare ancora qualcosa in velocità: l'AddNew è supportato dall'ODBC e
va tutto bene fino all'accodamento della seconda riga. Al secondo AddNew mi
si genera un errore:
-
2147217883
Per ottenere nuovi handle di riga è innanzitutto necessario rilasciare
quelli in uso.
Sembra quasi che non abbia eseguito l'UpDate!!! O sotto ADO va fatto
qualcos'altro (io li usavo col DAO!). Questo indipendentemente dall'uso di
BeginTrans e ComitTrans.


 piuttosto che ogni 10000 che cambia?
Credo che aumentando il numero di elementi possa aumentare la velocita'
complessiva, ma bisognerebbe fare delle prove.


 sola.
Però se guardo con SQLyog lo stato della tabella su cui sto facendo l'INSERT
INTO vedo i record aggiungersi uno alla volta. E' normale?
