Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Java e JDBC

  1. #1

    Java e JDBC

    Salve,
    sto faccendo dei test usando la pillola Connessione Java con Mysql postato da LeleFT. Ho creato un database con una tabella "studente" (matricola,nome,cognome,indirizzo,citta) con matricola auto_increment. Ho creato la seguente classe "Database.java":
    public class Database {
    private String db_name; // Nome del Database a cui connettersi
    ....

    //Apre la connessione con il Database
    public boolean connect() {
    ....
    }
    public Vector eseguiQuery(String query) {
    Vector v = null;
    String [] record;
    int colonne = 0;
    try{
    Statement stmt = conn.createStatement(); // Creo lo Statement per l'esecuzione della query
    ResultSet rs = stmt.executeQuery(query); // Ottengo il ResultSet dell'esecuzione della query
    v = new Vector();
    ResultSetMetaData rsmd = rs.getMetaData();
    colonne = rsmd.getColumnCount();

    while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet
    record = new String[colonne];
    for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
    v.add( (String[]) record.clone() );
    }
    rs.close(); // Chiudo il ResultSet
    stmt.close(); // Chiudo lo Statement
    }catch(Exception e){
    e.printStackTrace();
    errore = e.getMessage();
    }
    return v;
    }

    public boolean eseguiUpdate(String query) {
    ....
    }

    public void disconnect() {
    ....
    }


    public boolean isConnect(){
    ....
    }
    public String getError(){
    ....
    }
    }
    Ho creato la seguente classe che mi contiene le principali metodi tipo inserimento, cancellazione, modifica ecc. al database. Ecco il mio primo metodo di inserimento.
    public void aggiungiStudente(String nome, String cognome, String indirizzo, String citta){
    Database db = new Database("msdb","root", "root");
    if ( !db.connect() ) { //se non ho la connessione(false), quindi condizione vera, stampa errore ed esci!
    System.out.println("Errore durante la connessione.");
    System.out.println( db.getError() );
    System.exit(0);
    }

    String query="insert into studente (nome,cognome,indirizzo,citta) values" +"('" +nome+ "','" +cognome+ "','" +indirizzo+"','"+citta+"')"+";";
    [/B]db.eseguiQuery(query);[/B]
    }
    Vado a fare un test sulla classe Main:
    public static void main(String[] args) {
    Manage m = new Manage();
    /**
    * 1- l’inserimento di uno studente
    * basta fare m.aggiungiStudente("nome","cognome","indirizzo","c itta");
    */
    m.aggiungiStudente("mario", "rossi", "via roma", "roma");
    }
    ...ed ottengo il seguente errore:
    java.lang.NullPointerException
    at studentmanagement.Database.eseguiQuery(Database.ja va:69)
    at studentmanagement.Manage.aggiungiStudente(Manage.j ava:18)
    at studentmanagement.Main.main(Main.java:17)
    Nei BOLD text si verificano i NullPointerExceptions. Quindi per prima nella classe Database.java sulla creazione dello statement per l'esecuzione della mia query. Perche?

    Grazie

  2. #2
    Risolto grazie.
    L'operazione di "insert" è un operazione "eseguiUpdate" piuttosto che "eseguiQuery" come avevo fatto io!

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.