Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    17

    Lettura di un file txt ed inserimento su database

    Salve a tutti,
    sto tentando di scrivere su una servlet una classe di gestione di un database,
    il database quando viene creato crea le tabelle riempendole, o vede se già esistono,
    questo è il codice:

    codice:
    public class DbHandler {
    	
    	private static Connection connection = null;
    
            ------------------------------------------ 
            ------------------------------------------
            (ometto parti non utili)
            ------------------------------------------ 
            ------------------------------------------
            
    public static ArrayList<String> doQueryElencoSquadre(){
    
    
    		ArrayList<String> result = new ArrayList<String>();
    		Connection con = getHsqlDbConnection();
    		ResultSet res = null;
    		try {
    			String query = "select * from SQUADRE_A WHERE 1=1 ";
    			res = con.createStatement().executeQuery(query);
    			while(res.next()){
    				result.add(res.getString("NOME"));
    	        }
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    	    }
    		finally{
    			if (connection != null) closeDb();
    		}
    	    return result;
    	}
    
    
    public static Connection getHsqlDbConnection(){
    		if(connection == null){		// se è uguale a null crea la connessione e il database
    			try {
    		        Class.forName("org.hsqldb.jdbcDriver");
    		        connection = DriverManager.getConnection("jdbc:hsqldb:file:db_applicazione/nomedb","sa","");
    		        //Create db on fly
    		   //     creaTabellaUtenti();
    		        creaTabellaSquadre();
    			} 
    			catch (ClassNotFoundException e) {
    			    e.printStackTrace();
    			}
    			catch (SQLException e) {
    			
    }
    		}				// altrimenti restituisce la connessione al db
    		return connection;
    	}
    	
    	public static void creaTabellaSquadre(){
    		try {
    			connection.createStatement().executeUpdate("CREATE TABLE SQUADRE_A (Nome varchar(100))");
    			String nomeSquadra = null;
    			FileReader fr = new FileReader("/WEB-INF/File_del_Server/Squadre.txt");
    			BufferedReader in=new BufferedReader(fr);
    			nomeSquadra = in.readLine();
    			while(nomeSquadra != null){
    				connection.createStatement().executeUpdate("INSERT INTO SQUADRE_A values ('" + nomeSquadra + "')");
    				System.out.println("nomesquadra= " + nomeSquadra);
    				nomeSquadra = in.readLine();
    			}
    			in.close();
    			fr.close();
    		}
    		catch (SQLException e) {
    	
    	}
    		catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    non funziona la lettura da file,
    il file si trova alla cartella NomeApplicazione/WebContent/WEB-INF/File_del_Server

    non legge niente e non torna niente. Qualche indicazione?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da aledpa Visualizza il messaggio
    codice:
    FileReader fr = new FileReader("/WEB-INF/File_del_Server/Squadre.txt");
    non funziona la lettura da file
    Infatti non è questo il modo corretto dato che non si sa, in generale, dove sia la WEB-INF sul file-system. Ma lo "sa" il contesto, ovvero ServletContext.

    codice:
    InputStream is = servletContext.getResourceAsStream("/WEB-INF/File_del_Server/Squadre.txt");
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    17
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Infatti non è questo il modo corretto dato che non si sa, in generale, dove sia la WEB-INF sul file-system. Ma lo "sa" il contesto, ovvero ServletContext.

    codice:
    InputStream is = servletContext.getResourceAsStream("/WEB-INF/File_del_Server/Squadre.txt");
    grazie della risposta,
    mi viene segnalato un errore in servletContext:
    servletContext cannot be resolved

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da aledpa Visualizza il messaggio
    grazie della risposta,
    mi viene segnalato un errore in servletContext:
    servletContext cannot be resolved
    Davo per scontato che 'servletContext' lo intendessi come una variabile di tipo ServletContext. Giusto per fare l'esempio in generale per far capire che getResourceAsStream è appunto di ServletContext.

    Poi se sei in una servlet, allora erediti (da GenericServlet) un comodo getServletContext(). Ma lo puoi ottenere anche da ServletRequest.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    17
    in realtà sono in una classe di manipolazione di un database, e questa classe è usata da una servlet,
    facendo così infatti:
    ServletContext servletContext = RestfulServlet.getServletContext();

    (dove RestfulServlet è il nome della classe della servlet) mi viene dato:
    Cannot make a static reference to the non-static method getServletContext() from the type GenericServlet

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    17
    ho risolto prendendo il contesto e l'inputstream dalla servlet e passando questo al metodo della classe del database, non credo sia proprio ottimale come modo ma funziona

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da aledpa Visualizza il messaggio
    in realtà sono in una classe di manipolazione di un database
    Quote Originariamente inviata da aledpa Visualizza il messaggio
    ho risolto prendendo il contesto e l'inputstream dalla servlet e passando questo al metodo della classe del database, non credo sia proprio ottimale come modo ma funziona
    Allora o passi a tale classe il ServletContext oppure passi il InputStream .... qualcosa devi comunque passare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    17
    grazie

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.