Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Autocommit

  1. #1

    Autocommit

    Salve!
    sto facendo un semplice programmino in Java che comprende JSP e database MYSQL.
    Per gestire la risposta della query sul database, utilizzo un CachedRowSet.
    Quando lancio il JSP dovrei visualizzare una tabella con i valori presenti nel Database e invece mi appare l'errore.......

    A SQLException

    The error message was:
    Can't call commit when autocommit=true

    Please try again later

    Come posso evitare questo errore?
    Ho provato a settare dal prompt di MySql il comando

    SET AUTOCOMMIT = 0;

    ma non cambia niente. Chi sa aiutarmi?

  2. #2
    Prova ad eseguire il comando "SET AUTOCOMMIT = 0;" tramite java all'interno della JSP o ad usare il metodo java.sql.Connection.setAutoCommit(false). Oppure semplicemente evita di effettuare il commit... . Se usi un DataSource prova a vedere in qualche file di configurazione xml se da qualche parte puoi abilitare/disabilitare l'autocommit.
    Ciao

  3. #3
    Ho provato a fare SET AUTOCOMMIT = 0 sia da java che direttamente da Mysql ma niente da fare.

    da quello che ho capito (penso) e che sto CachedRowSet fa il commit automaticamente.....senza nessuna chiamata diretta (mia) ....ma tutto implicitamente.
    e poi MySql ha l'AUTOCOMMIT impostato per default a true.

    L'errore è sempre lo stesso

    +++++++++++++++++++++++++++++++
    A SQLException

    The error message was:
    Can't call commit when autocommit=true
    +++++++++++++++++++++++++++++++

    Class.forName( "com.mysql.jdbc.Driver" );
    rowSet = new CachedRowSetImpl();

    rowSet.setUrl("jdbc:mysql://localhost/guestbook");
    rowSet.setUsername("root");
    rowSet.setPassword("trigillu");


    rowSet.setCommand("SET AUTOCOMMIT = 0");

    rowSet.setCommand("SELECT firstName,lastName,email FROM guests");

    rowSet.execute();



    BO!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Santinizer
    [...] usare il metodo java.sql.Connection.setAutoCommit(false) [...]
    Hai provato con questo suggerimento di Santinizer?
    Da applicare al tuo oggetto Connection.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    ho provato ma niente da fare....

  6. #6
    Originariamente inviato da trigillu
    ho provato ma niente da fare....
    Su quale connessione hai applicato il metodo?
    Io non conoscevo quasta classe ma documentandomi ho visto che data un' istanza di CachedRowSetImpl è possibile ricavare la relativa Connection. Se gia non l'hai fatto prova a usare la seguente istruzione:

    Codice PHP:
    rowSet.getConnection().setAutoCommit(false); 
    subito dopo aver creato rowSet.

  7. #7
    Ho provato ma mi dice che getConnection()

    rowSet.getConnection().setAutoCommit(false);

    non è un metodo definito in cachedRowSet......
    A tentativi ho scoperto che la chiamata che manda in errore è

    rowSet.acceptChanges();

    Il metodo acceptChanges() fa il commit di nuovo....ma siccome Mysql lo fa di default (l'autocommit = true) .....mi lanciava l'eccezzione SQLException.

    é bastato commentare la precedente linea di codice e ora funziona......

    Grazie mille dell'aiuto!!! A presto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.