Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: [JAVA] ExecuteQuery

  1. #1

    [JAVA] ExecuteQuery

    Ciao ragazzi!
    Ho realizzato questa funzione:

    public void executeSQLQuery(String sql){
    try{
    Statement stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);
    }
    catch(Exception e)
    {
    System.out.println(e.getLocalizedMessage());
    }
    }

    Che richiamo così:

    executeSQLQuery("insert into clienti (codice) values ('" +
    Codice.getText() + "')");

    Il problema e che vorrei che mi restituisse un codice di errore preciso!

    Come fare?

    Ciao!

  2. #2
    Che argomento dovrebbe avere in uscita?( vorrei avere in uscita il codice univoco dell'errore )
    In effetti quando eseguo una insert mi da un errore e non dovrebbe ( poicheè nessun rigo viene restituito dal db )

    come fare per evitare ciò?

  3. #3
    Devi catturare l'eccezione SQLException

  4. #4
    Ok, fatto.
    Però se faccio una insert mi restituisce 0.
    Ma anche se tento di duplicare la chiave primaria mi da zero!

    Come faccio a distinguere i due tipi di errori?

    Codice:
    public int executeSQLQuery(String sql){
    try{
    Statement stmt = conn.createStatement();
    rs=stmt.executeQuery(sql);
    return 0;
    }
    catch(SQLException e)
    {
    System.out.println(e.getMessage() + " - " + e.getErrorCode());
    return e.getErrorCode();
    }
    }

  5. #5
    Utente di HTML.it L'avatar di munshun
    Registrato dal
    Sep 2002
    Messaggi
    102
    Ciao,

    nel metodo che richiami, non usare executeQuery() ma usa execute() (è più sicuro e ti ritorna un intero se non sbaglio). Se devi fare altre operazioni usa executeUpdate() (anche per la delete). Il metodo executeQuery in alcuni casi si comporta in modo strano.

    :metallica

    while(!$notte > 5:00)
    {$_GET['PHP_CODE'];}

  6. #6
    Il metodo executeQuery serve solo per operazioni non di scrittura sul db. Per tutte le operazioni che modificano il db si usa executeUpdate()

  7. #7
    Come vi sembrano come soluzioni?

    /*-----------------------------------------------------------
    Query che non restituisce risultati
    -----------------------------------------------------------*/
    public int executeQuery(String sql){
    try{
    Statement stmt = conn.createStatement();
    stmt.execute(sql);
    return 0;
    }
    catch(SQLException e)
    {
    System.out.println("-------------------------------");
    System.out.println("Messaggio: " + e.getMessage());
    System.out.println("Codice Errore: " + e.getErrorCode());
    System.out.println("Stato SQL: " + e.getSQLState());
    System.out.println("-------------------------------");
    if (e.getErrorCode()==-3702){
    JOptionPane.showMessageDialog(this,
    "Non sono stati compilati correttamente i campi!!\n" +
    e.getMessage());
    return 1;
    };
    if (e.getErrorCode()==0){
    JOptionPane.showMessageDialog(this,
    "Duplicazione di una chiave primaria!!\n" +
    e.getMessage());
    return 1;
    };
    JOptionPane.showMessageDialog(this, "Si è verificato un errore!\nControllare il log da console.");
    return 1;
    }
    }
    /*-----------------------------------------------------------
    Query che restituisce risultati
    -----------------------------------------------------------*/
    public ResultSetMetaData ResultQuery(String sql){
    ResultSetMetaData metaData;
    try{
    Statement stmt = conn.createStatement();
    ResultSet rs=stmt.executeQuery(sql);
    metaData=rs.getMetaData();
    return metaData;
    }
    catch(SQLException e){
    return null;
    }
    }

  8. #8
    Putroppo però così mi riene restituita un'eccezione:

    ResultSetMetaData metaData = ResultQuery(sql);

    Ma come cavolo posso creare una funzione che mi restituisca il risultato di una interrogazione??????


  9. #9
    Ho provato questa funzione....
    Non funziona!!!!!!!!
    Eppure come num mi stampa 1!

    public void aggiorna(String sql){
    try{
    Statement stmt = conn.createStatement();
    int num=stmt.executeUpdate(sql);
    System.out.println(num);
    }catch(Exception e){System.out.println(e);}
    }

    Cosa sbaglio????????

    La richiamo così:
    test.aggiorna("insert into clienti (codice) values ('5')");

  10. #10
    E' giusta: num restituisce il numero di record aggiornati!
    inserisci un record, quindi è giusto che ti ritorni 1 ...
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

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.