Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-03-2013, 05:05   #41
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
In questo modo però se step() o la commit lanciano una eccezione la dispose() non è mai invocata. Dovresti metterla in una finally {}. Trattandosi di una libreria jni meglio non rischiare.
Certamente! Si vede che ho scritto una cosa a forza di tentativi
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 11:59   #42
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Fatto il test jdbc driver VS sqlite4java wrapper.
In sintesi, il risultato:
Codice:
Test with jdbc driver...
Total time: 21.997608
Test with wrapper...
Total time: 7.7242694
Apparentemente il vincitore e' il wrapper.
Non mi sento di affermarlo con certezza a causa della mancanza di documentazione. Sono quindi andato per tentativi e non posso escludere che manchi qualcosa che una volta aggiunto possa peggiorare i tempi. Cmq i dati ci sono, nel database.

Ho fatto il test in questo modo:
- per quanto riguarda il jdbc driver, ho preso il codice di wingman e l'ho modificato leggermente (vale a dire, non mi interessava il tempo di creazione delle tabelle, ...).
Inoltre, wingman aveva portato i cicli di set della prepared statement FUORI dal ciclo principale, visto che i dati che si scrivevano erano sempre gli stessi.
Purtroppo questo non e' possibile con il wrapper; dunque, per uniformita' di vedute (e poi, anche se i dati sono sempre gli stessi, vogliamo far finta che non lo siano) ho riportato il set della prepared nel ciclo stesso.

- per quanto riguarda il wrapper, ho fatto riferimento a quanto ho scritto precedentemente, cercando di portarlo nella maniera piu' simile possibile a quanto fatto da wingman.
E' da notare che, nonostante la banalita' del programma, ho dovuto lottare per un bel po' contro eccezioni di vario tipo poiche' qualcosa mancava sempre o era fuori posto, ecc.
Inoltre in un caso (una volta che credevo che ormai fosse tutto a posto) ho avuto un crash della jvm.

Quindi, il driver jdbc e' piu' lento ma piu' sicuro. Una cosa su cui meditare...


Qui l'applicazione che ho usato. Mi vergogno un po' vista la bassa qualita', trattasi di un'applicazione da pausa pranzo:

Codice:
package sqliteperftest;

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;

/**
 *
 * @author MEGI
 */
public class SqlitePerfTest
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        try 
        {
            System.out.println ("Test with jdbc driver...");
            TestSqliteDriver.doit();
            System.out.println ("Test with wrapper...");
            TestSqliteWrapper.doit();
        }
        catch (Exception ex) 
        {
            System.out.println ("" + ex);
        }
    }
}



class TestSqliteDriver
{
  public static int NUM_TEXT = 100;
  public static int NUM_INTEGER = 100;
  public static int NUM_INSERT = 100000;

  public static void doit() throws ClassNotFoundException
  {
    
    // load the sqlite-JDBC driver using the current class loader
    Class.forName("org.sqlite.JDBC");

    Connection connection = null;
    try
    {
      // create a database connection
      connection = DriverManager.getConnection("jdbc:sqlite:sampledriver.db");
      
      connection.setAutoCommit(false);
      
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // set timeout to 30 sec.

      statement.executeUpdate("drop table if exists two_hundred_one");
      String create = "create table two_hundred_one (id integer";
      for(int i=1; i<=NUM_TEXT; i++)
      {
          create += ", text_" + i + " text";
      }
      for(int i=1; i<=NUM_INTEGER; i++)
      {
          create += ", int_" + i + " integer";
      }
      create += ")";
      statement.executeUpdate(create);
      
      String insert = "insert into two_hundred_one values(?";
      for(int i=0; i<NUM_TEXT + NUM_INTEGER; i++)
      {
          insert += ", ?";
      }
      insert += ")";
      
      long start = System.nanoTime();
      PreparedStatement preparedStatement = connection.prepareStatement(insert);
      
      for(int i=1; i<=NUM_INSERT; i++)
      {
        preparedStatement.setInt(1, i);
        for(int j=1; j<=NUM_TEXT; j++)
        {
          preparedStatement.setString(j + 1, "Text_" + j);
        }
        for(int j=1; j<=NUM_INTEGER; j++)
        {
          preparedStatement.setInt(NUM_TEXT + j + 1, j);
        }
        preparedStatement.executeUpdate();
      }
      
      connection.commit();
      long end = System.nanoTime();
      System.out.println("Total time: " + (float)(end-start)/1000000000 );
    }
    catch(SQLException e)
    {
      // if the error message is "out of memory", 
      // it probably means no database file is found
      System.err.println(e.getMessage());
      e.printStackTrace(System.out);
    }
    finally
    {
      try
      {
        if(connection != null)
        {
          connection.close();
        }
      }
      catch(SQLException e)
      {
        // connection close failed.
        System.err.println(e);
      }
    }
    
  }
}

class TestSqliteWrapper
{
    public static void doit()
    {
        String              query;
        SQLiteConnection    db                  = null;
        SQLiteStatement     st                  = null;

        try
        {
            /* Open connection */
            db              = new SQLiteConnection(new File("samplewrapper.db"));
            db.open(true);

            SQLiteStatement stmtDrop = null;
            try
            {
                db.exec("BEGIN");
                query           = "drop table if exists two_hundred_one";
                stmtDrop = db.prepare(query);
                stmtDrop.step();
                db.exec("COMMIT");
            }
            catch (Exception ee)
            {
                //System.out.println (ee.toString());
                db.exec("ROLLBACK");
            }
            finally
            {
                if (stmtDrop != null)
                {
                    stmtDrop.dispose();
                }
            }
            
            db.exec("BEGIN");
            String create = "create table two_hundred_one (recid integer";

            for(int i=1; i<=TestSqliteDriver.NUM_TEXT; i++)
            {
                create += ", text_" + i + " text";
            }
            for(int i=1; i<=TestSqliteDriver.NUM_INTEGER; i++)
            {
                create += ", int_" + i + " integer";
            }
            create += ")";
            db.exec(create);
            db.exec("COMMIT");
            
            db.exec("BEGIN");
            query = "insert into two_hundred_one (recid";
            for(int i=1; i<= TestSqliteDriver.NUM_TEXT; i++)
            {
                query += ", text_" + i;
            }
            for(int i=1; i<=TestSqliteDriver.NUM_INTEGER; i++)
            {
                query += ", int_" + i;
            }
            
            query += ") values(?";

            for(int i=0; i < TestSqliteDriver.NUM_TEXT + TestSqliteDriver.NUM_INTEGER; i++)
            {
                query += ", ?";
            }
            query += ")";

            long start = System.nanoTime();
            st  = db.prepare(query);
            for(int i=1; i<=TestSqliteDriver.NUM_INSERT; i++)
            {
                for(int j=1; j<=TestSqliteDriver.NUM_TEXT; j++)
                {
                    st.bind(j+1, "Text_" + j);
                }

                for(int j=1; j<=TestSqliteDriver.NUM_INTEGER; j++)
                {
                    st.bind(TestSqliteDriver.NUM_TEXT + j + 1, j);
                }

                st.bind(1, i);
                st.step();
                st.reset();
            }
            db.exec("COMMIT");
            long end = System.nanoTime();
            System.out.println("Total time: " + (float)(end-start)/1000000000 );
        }
        catch (Exception ee)
        {
            System.out.println ("Exception inserting record: " + ee);
            ee.printStackTrace(System.err);       // test
            System.exit(0);                      // test
        }
        finally
        {
            try
            {
                if (db != null)
                {
                    db.dispose();
                }
            }
            catch (Exception e) { }
            try
            {
                if (st != null)
                {
                    st.dispose();
                }
            }
            catch (Exception e) {}
        }
    }
}
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 13:11   #43
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515


Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 13:49   #44
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
http://code.google.com/p/sqlite4java/

sqlite4java is not a JDBC driver. Access to the database is made through the custom interfaces of com.almworks.sqlite4java package. Tighter integration with SQLite offers better performance and features not available through JDBC interfaces.



http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers



Ultima modifica di Vincenzo1968 : 04-03-2013 alle 18:52.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 14:07   #45
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Si, la documentazione ufficiale e' carentissima e lavorare con sqlite4java e' un mal di testa.
Io ho proceduto per tentativi, facendo delle supposizioni e non toccando piu' nulla quando ho ottenuto quello che mi serve.
Ovviamente il lavoro andrebbe approfondito, ma preferisco fare altro, nella mia vita

Collegamento: l'esempio che hai riportato funziona bene:
Codice:
            db              = new SQLiteConnection(new File(sqliteFile));
            db.open(true);
Javadoc ovviamente assente, cmq e' chiaro.

Nel tuo esempio, c'era una query ma non una insertion. Ecco qui.
Per prima cosa ho cancellato la tabella, cosi' da ricrearla (i miei campi possono cambiare a seconda del macchinario da cui ho prelevato i dati):

Codice:
            try
            {
                db.exec("BEGIN");
                query           = "DROP TABLE " + tableName;
                SQLiteStatement stmtDrop = db.prepare(query);
                stmtDrop.step();
                db.exec("COMMIT");
                stmtDrop.dispose();
            }
            catch (Exception ee)
            {
                //System.out.println (ee.toString());
                db.exec("ROLLBACK");
            }
Esiste anche la DROP TABLE IF EXISTS ma al momento della stesura del codice c'erano ancora troppe variabili in gioco e non ho provato.
Da notare:
- aprire la transazione con db.exec("BEGIN");
-creare lo statement ed eseguirlo;
- chiudere la transazione con db.exec("COMMIT");
- chiudere la transazione con db.exec("ROLLBACK") in caso di errore;
- dispose dello statement.

Esiste anche l'autocommit ed immagino esistano anche altre opzioni che probabilmente evitano questi passaggi. Non le ho provate ne' cercate.

Per creare la tabella, ho provato un altro stile, ma non so dire quale sia meglio:

Codice:
            db.exec("BEGIN");
            String query           = buildCreateTableQuery(tableName, model);
            db.exec(query);
            db.exec("COMMIT");
la buildCreateTableQuery() e' triviale e restituisce la stringa. Non la riporto qui per ovvii motivi.
Anche qui occorre prestare attenzione a fare il ROLLBACK nel caso l'operazione fallisca; altrimenti tutte le altre operazioni continueranno a fallire.

Per l'inserimento dei dati ho usato una preparedStatement:
Codice:
            String query           = buildInsertQuery(tableName, model);
            SQLiteStatement st              = db.prepare(query);
Analogamente, buildInsertQuery() e' triviale.

In accordo con il mio software, ho poi effettuato il binding per ogni record letto da file, ed eseguito l'operazione:

Codice:
for (int i = 0; i < l; i++)
{
    String strType  = model.getValueAt(i, 3).toString();
    switch (strType) 
    {
        case "INT":
            st.bind(i+1, Integer.parseInt(vect[i]));
            break;
        case "DOUBLE":
            st.bind(i+1, Double.parseDouble(vect[i]));
            break;
        default:
            st.bind(i+1, vect[i]);
            break;
    }
}
st.step();
countSuccess++;
st.reset(true);
st.step() funziona anche nel caso delle query di update.

Non conoscendo nulla riguardo l'area di commit (grandezza, prestazioni,....) ho deciso di fare BEGIN...COMMIT/ROLLBACK ogni 100 record. Non ho voluto indagare di piu' per mancanza di tempo.

Da notare st.reset() che effettua l'unbinding in modo che al ciclo successivo possa fare il binding con i nuovi valori.
Penso che questo reset possa essere evitato in casi si usi un reference (in tal caso immagino basti aggiornare l'oggetto referenziato), ma e' solo un'ipotesi
Perché non proponi di aggiungere questa tua miniguida nel sito ufficiale?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 14:30   #46
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Perché non proponi di aggiungere questa tua miniguida nel sito ufficiale?
No dai, e' solo un test, e non sono nemmeno sicuro che sia 100% corretto! Per esempio, manca la chiusura del database alla fine. Non e' un codice di qualita', e' solo un esempio per voi, cari amici
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2013, 15:08   #47
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Si beh, quando hai cinque minuti di tempo puoi aggiustarlo un attimino e postarlo su google code. Secondo me è molto meglio del "getting started" ufficiale.



Comunque, dico, posta non il confronto con jdbc, ma questo: http://www.hwupgrade.it/forum/showpo...3&postcount=35
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2013, 15:17   #48
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
vincenzo@mar mar 05$ javac -cp '.:sqlite-jdbc-3.7.2.jar:sqlite4java.jar:h2-1.3.170.jar' SqlitePerfTest.java
vincenzo@mar mar 05$ java -cp '.:sqlite-jdbc-3.7.2.jar:sqlite4java.jar:h2-1.3.170.jar' SqlitePerfTest
Test with jdbc driver...
Total time: 21.36797
Test with wrapper...
Total time: 7.377926
Test with h2 driver...
Total time: 28.130777



H2

Codice:
//package sqliteperftest;

import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.*;

/**
 *
 * @author MEGI
 */
public class SqlitePerfTest
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        try 
        {
            System.out.println ("Test with jdbc driver...");
            TestSqliteDriver.doit();
            System.out.println ("Test with wrapper...");
            TestSqliteWrapper.doit();
            System.out.println ("Test with h2 driver...");
            TestH2Driver.doit();            
        }
        catch (Exception ex) 
        {
            System.out.println ("" + ex);
        }
    }
}

class TestH2Driver
{
  public static int NUM_TEXT = 100;
  public static int NUM_INTEGER = 100;
  public static int NUM_INSERT = 100000;

  public static void doit() throws ClassNotFoundException
  {
    
    // load the sqlite-JDBC driver using the current class loader
    Class.forName("org.h2.Driver");

    Connection connection = null;
    try
    {
      // create a database connection
      connection = DriverManager.getConnection("jdbc:h2:sampleh2driver.db", "sa", "");
      
      connection.setAutoCommit(false);
      
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // set timeout to 30 sec.

      statement.executeUpdate("drop table if exists two_hundred_one");
      String create = "create table two_hundred_one (id integer";
      for(int i=1; i<=NUM_TEXT; i++)
      {
          create += ", text_" + i + " text";
      }
      for(int i=1; i<=NUM_INTEGER; i++)
      {
          create += ", int_" + i + " integer";
      }
      create += ")";
      statement.executeUpdate(create);
      
      String insert = "insert into two_hundred_one values(?";
      for(int i=0; i<NUM_TEXT + NUM_INTEGER; i++)
      {
          insert += ", ?";
      }
      insert += ")";
      
      long start = System.nanoTime();
      PreparedStatement preparedStatement = connection.prepareStatement(insert);
      
      for(int i=1; i<=NUM_INSERT; i++)
      {
        preparedStatement.setInt(1, i);
        for(int j=1; j<=NUM_TEXT; j++)
        {
          preparedStatement.setString(j + 1, "Text_" + j);
        }
        for(int j=1; j<=NUM_INTEGER; j++)
        {
          preparedStatement.setInt(NUM_TEXT + j + 1, j);
        }
        preparedStatement.executeUpdate();
      }
      
      connection.commit();
      long end = System.nanoTime();
      System.out.println("Total time: " + (float)(end-start)/1000000000 );
    }
    catch(SQLException e)
    {
      // if the error message is "out of memory", 
      // it probably means no database file is found
      System.err.println(e.getMessage());
      e.printStackTrace(System.out);
    }
    finally
    {
      try
      {
        if(connection != null)
        {
          connection.close();
        }
      }
      catch(SQLException e)
      {
        // connection close failed.
        System.err.println(e);
      }
    }    
  }
}



class TestSqliteDriver
{
  public static int NUM_TEXT = 100;
  public static int NUM_INTEGER = 100;
  public static int NUM_INSERT = 100000;

  public static void doit() throws ClassNotFoundException
  {
    
    // load the sqlite-JDBC driver using the current class loader
    Class.forName("org.sqlite.JDBC");

    Connection connection = null;
    try
    {
      // create a database connection
      connection = DriverManager.getConnection("jdbc:sqlite:sampledriver.db");
      
      connection.setAutoCommit(false);
      
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // set timeout to 30 sec.

      statement.executeUpdate("drop table if exists two_hundred_one");
      String create = "create table two_hundred_one (id integer";
      for(int i=1; i<=NUM_TEXT; i++)
      {
          create += ", text_" + i + " text";
      }
      for(int i=1; i<=NUM_INTEGER; i++)
      {
          create += ", int_" + i + " integer";
      }
      create += ")";
      statement.executeUpdate(create);
      
      String insert = "insert into two_hundred_one values(?";
      for(int i=0; i<NUM_TEXT + NUM_INTEGER; i++)
      {
          insert += ", ?";
      }
      insert += ")";
      
      long start = System.nanoTime();
      PreparedStatement preparedStatement = connection.prepareStatement(insert);
      
      for(int i=1; i<=NUM_INSERT; i++)
      {
        preparedStatement.setInt(1, i);
        for(int j=1; j<=NUM_TEXT; j++)
        {
          preparedStatement.setString(j + 1, "Text_" + j);
        }
        for(int j=1; j<=NUM_INTEGER; j++)
        {
          preparedStatement.setInt(NUM_TEXT + j + 1, j);
        }
        preparedStatement.executeUpdate();
      }
      
      connection.commit();
      long end = System.nanoTime();
      System.out.println("Total time: " + (float)(end-start)/1000000000 );
    }
    catch(SQLException e)
    {
      // if the error message is "out of memory", 
      // it probably means no database file is found
      System.err.println(e.getMessage());
      e.printStackTrace(System.out);
    }
    finally
    {
      try
      {
        if(connection != null)
        {
          connection.close();
        }
      }
      catch(SQLException e)
      {
        // connection close failed.
        System.err.println(e);
      }
    }
    
  }
}

class TestSqliteWrapper
{
    public static void doit()
    {
        String              query;
        SQLiteConnection    db                  = null;
        SQLiteStatement     st                  = null;

        try
        {
            /* Open connection */
            db              = new SQLiteConnection(new File("samplewrapper.db"));
            db.open(true);

            SQLiteStatement stmtDrop = null;
            try
            {
                db.exec("BEGIN");
                query           = "drop table if exists two_hundred_one";
                stmtDrop = db.prepare(query);
                stmtDrop.step();
                db.exec("COMMIT");
            }
            catch (Exception ee)
            {
                //System.out.println (ee.toString());
                db.exec("ROLLBACK");
            }
            finally
            {
                if (stmtDrop != null)
                {
                    stmtDrop.dispose();
                }
            }
            
            db.exec("BEGIN");
            String create = "create table two_hundred_one (recid integer";

            for(int i=1; i<=TestSqliteDriver.NUM_TEXT; i++)
            {
                create += ", text_" + i + " text";
            }
            for(int i=1; i<=TestSqliteDriver.NUM_INTEGER; i++)
            {
                create += ", int_" + i + " integer";
            }
            create += ")";
            db.exec(create);
            db.exec("COMMIT");
            
            db.exec("BEGIN");
            query = "insert into two_hundred_one (recid";
            for(int i=1; i<= TestSqliteDriver.NUM_TEXT; i++)
            {
                query += ", text_" + i;
            }
            for(int i=1; i<=TestSqliteDriver.NUM_INTEGER; i++)
            {
                query += ", int_" + i;
            }
            
            query += ") values(?";

            for(int i=0; i < TestSqliteDriver.NUM_TEXT + TestSqliteDriver.NUM_INTEGER; i++)
            {
                query += ", ?";
            }
            query += ")";

            long start = System.nanoTime();
            st  = db.prepare(query);
            for(int i=1; i<=TestSqliteDriver.NUM_INSERT; i++)
            {
                for(int j=1; j<=TestSqliteDriver.NUM_TEXT; j++)
                {
                    st.bind(j+1, "Text_" + j);
                }

                for(int j=1; j<=TestSqliteDriver.NUM_INTEGER; j++)
                {
                    st.bind(TestSqliteDriver.NUM_TEXT + j + 1, j);
                }

                st.bind(1, i);
                st.step();
                st.reset();
            }
            db.exec("COMMIT");
            long end = System.nanoTime();
            System.out.println("Total time: " + (float)(end-start)/1000000000 );
        }
        catch (Exception ee)
        {
            System.out.println ("Exception inserting record: " + ee);
            ee.printStackTrace(System.err);       // test
            System.exit(0);                      // test
        }
        finally
        {
            try
            {
                if (db != null)
                {
                    db.dispose();
                }
            }
            catch (Exception e) { }
            try
            {
                if (st != null)
                {
                    st.dispose();
                }
            }
            catch (Exception e) {}
        }
    }
}
H2

Ultima modifica di Vincenzo1968 : 05-03-2013 alle 15:42.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
NVIDIA cambia strategia? La GPU Feynman ...
Signal respinge le accuse dopo il down A...
Uragano Melissa in arrivo: la tempesta d...
8K o 4K? Ecco perché il tuo occhi...
Mercato auto europeo in crescita nei pri...
Addio SSD e RAM, benvenuti funghi: dagli...
TCL Q6C: tecnologia e design per un TV c...
Corsair MP700 PRO XT al debutto: un SSD ...
Apple Watch Ultra 2 in titanio con GPS +...
Nuova protezione per Windows 11: scansio...
GoPro LIT HERO a 249€ su Amazon: la nuov...
PayPal integra i pagamenti in ChatGPT: c...
Battlefield REDSEC: al via la Stagione 1...
Dark Power 14 è un alimentatore d...
Ufficiale: Amazon taglia 14.000 posti di...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v