Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JDBC Java e Oracle Problema PreparedStatement

    Salve a tutti!
    Sto facendo questo programma in java:
    Stampare su console il numero di attrezzature associate ad ogni progetto. Il conteggio va fatto attraverso codice Java, SENZA usare la funzione COUNT di SQL.
    Sto utilizzando la versione Express Edition di Oracle. La tabella che devo interrogare è formata da sigla del progetto, idlaboratorio, nome, responsabile, numero attrezzature.
    Da premettere che non è la soluzione più efficiente perchè ci stiamo esercitando con gli statement e allora il prof ha reso un pò + difficile il tt.
    Sto procedendo in questo modo:
    - prendo tutte le sigle dei progetti
    - per ogni sigla seleziono il numero di attrezzature e scorrendo il ResultSet sommo le attrezzature
    - ad ogni iterazione stampo sigla del progetto e somma delle attrezzature relative
    codice:
    .
    .
    .
    int somma = 0;
    	try {
    		Class.forName("oracle.jdbc.driver.OracleDriver");
    		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "LOGIN", "PASSWORD");
    		Statement st = con.createStatement();
    		PreparedStatement pst = con.prepareStatement("select n_attrezzature from laboratorio where sigla='?'");
    		ResultSet sigle = st.executeQuery("select distinct sigla from laboratorio");
    		ResultSet rs=null;
    			
    		while(sigle.next()){
    			String sigla = sigle.getString("sigla");
    			pst.setString(1,sigla); <---qui mi segnala l'errore
    			rs = pst.executeQuery();
    			while(rs.next())
    				somma+= rs.getInt("n_attrezzature");	
    			System.out.println("Attrezzature disponibili per " + sigla + ": " + somma);
    		}
    .
    .
    .
    Ecco l'errore :

    java.sql.SQLException: Eccezione IO: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:125)
    at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:162)
    at oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:274)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnecti on.java:328)
    at oracle.jdbc.driver.PhysicalConnection.<init>(Physi calConnection.java:361)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnect ion.java:151)
    at oracle.jdbc.driver.T4CDriverExtension.getConnectio n(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriv er.java:595)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Esercizio2.main(Esercizio2.java:17)


    CHI PUò AIUTARMI A RISOLVERE QUESTO ERRORE? DOVE SBAGLIO??
    Grazie a tutti per l'aiuto anticipatamente

  2. #2
    Credo che l'errore derivi dal fatto che stai tentando di eseguire una query mentre su quella connessione hai un ResultSet aperto, e questo il driver JDBC di Oracle non mi pare che lo consenta. Puoi provare ad eseguire una query alla volta, salvando in una struttura dati i risultati della prima e poi scorrendo sulla struttura dati anziché sul ResultSet.

    Ciao,

  3. #3
    ciao grazie per la rsp.ma ricordi male perchè funziona anche con diversi resultset. cmq ho risolto l'errore.

    ...laboratorio where sigla='?'"); non ci vogliono gli apici prima e dopo ?

    ciao ciao



    come si fa per chiuderee il topic???

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 © 2026 vBulletin Solutions, Inc. All rights reserved.