Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17

    [JDBC] Popolamento Database

    Salve ragazzi. Da poco mi sono cimentato con la fusione fra Eclipse e Database (uso PostgreSQL come DBMS). In particolare ho due problemi: il primo è COME collegare Eclipse al database, ed il secondo è il popolamento. Del primo problema non ho proprio idea di come fare (il prof ci ha spiegato che dobbiamo andare da qualche parte in New Connection Profile ma io non trovo nulla del genere); per il secondo problema, ecco il codice:

    codice:
    import java.sql.*;
    import java.util.*;
    
    public class Query {
    	public static void main(String[] args) {
    		Connection conn = null;
    		try {
    			Class.forName("org.postgresql.Driver");
    			conn = DriverManager.getConnection("jdbc:postgresql://localhost/prova", "postgres", "password");
    		}
    		catch (Exception e) {
    			System.out.println("Impossibile connettersi al database");
    			System.exit(1);
    		}
    		try {
    			Statement stmnt = conn.createStatement();
    			ResultSet result = null;
    			for(int j=0; j<=100;j++){
    				result = stmnt.executeQuery("insert into Azienda(nomeAzienda,citta,nDipendenti) values('Azienda" + j +"' ,'citta" + j + "' ,100" + j + ");"
    );
    			}
    			while(result.next()) {
    				String query = result.getString(1) + "\t\t" + result.getString(2) + "\t\t" + result.getInt(3);
    				System.out.println(query);
    			}
    		} catch (Exception x) {
    			System.out.println("Errore nella lettura dei dati");
    			x.printStackTrace();
    			System.exit(1);
    		}
    	}
    }
    Allora, come potete vedere io faccio un ciclo for per popolare il database con stringhe differenti e poi mi faccio restituire il risultato con le get. Tuttavia il programma mi lancia l'eccezione:
    codice:
    Errore nella lettura dei dati
    org.postgresql.util.PSQLException: Nessun risultato è stato restituito dalla query.
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:253)
    	at Query.main(Query.java:19)
    Cosa sbaglio?

    Ecco la query per la creazione della tabella che ho scritto in PostgreSQL:

    codice:
    create table Azienda (
    nomeAzienda varchar(20),
    citta varchar(20),
    nDipendenti int,
    constraint PK_vincolo primary key(nomeAzienda)
    );
    Grazie a tutti.

    PS: Non sapevo se postarlo qui o nella sezione Database. Nel caso lo spostate.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    quando si lavora con i database bisogna avere un accesso diretto esterno al programma al database.
    Ora tu vuoi accedere con eclipse (in realtà non ne hai bisogno).
    Postgres è in locale e ha anche una comoda interfaccia utente per l'accesso allo stesso. Sarebbe interessante sapere se hai creato il database, se si quale delle due query da errore (insert o list), provare a ripetere la stessa query direttamente sul database (per circoscrivere l'errore). A questo punto si sa chi crea problemi e come risolverli
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Allora il Database l'ho creato in postgreSQL, e da lì funziona tutto (cioè se scrivo 20 insert in effetti inserisce le cose), invece da Eclipse non lo fa. Sostanzialmente a me serve un ciclo for per popolare il database e non so armeggiare con gli script di postgreSQL perché non conosco il suo linguaggio.

    Spero di aver risposto a tutto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    in realtà tu devi "armeggiare" con query SQL.
    Prova a stampare a video la query generata dal tuo programma ( non da eclipse ) e vedi se quella è corretta (cioè riesci con quella a fare una insert)
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Si è corretta. Mi fa inserire tranquillamente. Mentre invece quella scritta in Eclipse inserisce solo una riga (cioè "Azienda0" , "Città0" , 1000) perché al secondo ciclo del for di blocca e mi restituisce quell'errore.

    Se facessi, invece, in PostgreSQL, 300 di quelle query , me le esegue tranquillamente.

    Capito il casino?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Forse sbaglio nel result? Alla fine a me non interessa vedere la tabella, ma solo popolare il database allo scopo di "stress-test".

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ok la prima query è corretta...mi viene in mente, come apri la connessione? fai una commit dopo insert?

    EDIT

    se è uno stress test, devi ripetere tante volte una stessa operazione, che è

    1. prepari i dati da inserire (prepari query)
    2. esegui query
    3. esegui commit
    4. ritorni

    queste 4 istruzioni vanno in un metodo a parte e tu devi richiamare tante volte quel metodo
    RTFM Read That F*** Manual!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Non so se ho capito cosa intendi, però io non faccio altro che registrare il driver di PostgreSQL (l'ho importato nel progetto di Eclipse) e stabilire una connessione con:

    codice:
    Class.forName("org.postgresql.Driver"); 
    
    conn = DriverManager.getConnection("jdbc:postgresql://localhost/prova", "postgres", "immagine");

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    17
    Originariamente inviato da valia
    ok la prima query è corretta...mi viene in mente, come apri la connessione? fai una commit dopo insert?

    EDIT

    se è uno stress test, devi ripetere tante volte una stessa operazione, che è

    1. prepari i dati da inserire (prepari query)
    2. esegui query
    3. esegui commit
    4. ritorni

    queste 4 istruzioni vanno in un metodo a parte e tu devi richiamare tante volte quel metodo
    Mi manca l' "esegui commit"; cosa intendi in termini di codice?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    quando crei e/o apri una connessione con un db ci sono diverse opzioni, tra cui quella del commit...prova a fare come ti ho detto sopra
    RTFM Read That F*** Manual!!!

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.