PDA

View Full Version : [C#] Database & Insert


yagamiraito
20-12-2007, 16:46
Inserisco una lista di elementi (25) in un database.

Tempo Impiegato = 4 secondi!!!! E' normale che impieghi cosė tanto?


Io ho utilizzato ExecuteNonQuery(), ma non č che esiste un metodo pių veloce??




public bool INSERISCI(string sql)
{
SQLiteConnection connessione;
using (connessione = new SQLiteConnection())
{
try
{
connessione.ConnectionString = ConnessioneDatabase.DBSOURCE;
connessione.Open();
using (SQLiteCommand command = new SQLiteCommand(connessione))
{
command.CommandText = sql;
command.ExecuteNonQuery();
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
return false;
}
}
return true;
}

isAlreadyInUse
20-12-2007, 16:48
Cosi ne inserisco 10.000 in 5/6 secondi su un PocketPc

DbTransaction dbTrans = cnn.BeginTransaction();
cmd.CommandText = "INSERT INTO TestCase(Field1) VALUES(?)";
DbParameter Field1 = cmd.CreateParameter();
cmd.Parameters.Add(Field1);

for (int n = 0; n < 10000; n++) {
Field1.Value = n;
cmd.ExecuteNonQuery();
}

dbTrans.Commit();

feal87
29-12-2007, 18:48
Il tuo codice manca di ottimizzazione. Con questo codice apri e chiudi la connessione OGNI volta che fai un inserimento (apertura e chiusura connessione sono le procedure pių dispendiose in termini di tempo), una pratica sbagliatissima in un contesto database.
Prova a tenere aperta la connessione per la durata della tua applicazione. Il tutto dovrebbe essere molto pių responsivo.