Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378

    [JAVA] salvare e recuperare file in un database

    Ciao a tutti, sono due giorni che cerco come salvare un file in un database e non trovo proprio nulla, fin0ora ho solo trovato che devi salvarlo in un campo BLOB o LONG BLOB ma di esemi nemmeno l'ombra....

    Qualcuno sarebbe così gentile da postarmi un esempio o una guida !?!?


    grazie a tutti per la disponibilità.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Panorama: ho una tabella, semplice semplice, in cui salvo id, nome e bytecode di alcune immagini.

    Dato per scontato di aver eseguito la connessione (in conn) a database, quindi lancio la query e leggo il risultato (estraggo quindi l'immagine dal database)

    codice:
    PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM IMAGES WHERE ID=1");
    ResultSet rs = pstmt.executeQuery();
    
    //estrazione
    while (rs.next()) {
      OutputStream fos = new java.io.FileOutputStream(new File("new_" + rs.getString("name")));
      InputStream fin = rs.getBinaryStream("img");
      byte[] b = new byte[fin.available()];
      fin.read(b);
      fos.write(b);
      fos.flush();
      fos.close();
    }
    Per l'inserimento invece:

    codice:
    File file = new File("immagine.jpg");
    InputStream fin = new java.io.FileInputStream(file);
    int fileLength = (int)file.length();
    
    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO IMAGES (NAME, IMG) "+"VALUES (?, ?)");
    pstmt.setString(1, file.getName());
    pstmt.setBinaryStream (2, fin, fileLength);
    pstmt.executeUpdate();
    E' il codice tratto dal sito della sun, però da quando hanno messo mano alla documentazione, l'articolo da cui l'ho pescato non lo trovo più... ci sono altri articoli (reference & learning) cercando le chiavi "sql", "blob" e simili
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    Grazie Andrea1979 appena ho un attimo provo... se nn dovessi riuscirci ti chiederò ancora qualche spiegazione !!!


    grazie 1000 e buon fine settimana !!!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    Ciao, ho provato il codice che mi hai postato, però non riesco a farlo funzionare... io ho aperto la connessione in questo modo, hai mica idea di come fare ???


    String driverName = "com.mysql.jdbc.Driver";
    Class.forName(driverName).newInstance();

    // indirizzo del DB
    String serverName = "localhost";

    // nome del database
    String mydatabase = "prova";

    // stringa di connessione
    String url = "jdbc:mysql://" + serverName + "/" + mydatabase;

    connection = DriverManager.getConnection(url, "admin", "");

    st = connection.createStatement();



    grazie ciao ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    Comincia a funzionare, ma non ho mai usato un PreparedStatment per accedere a un database..... potresti gentilmente spiegarmi cosa fanno queste due istruzioni ???

    pstmt.setString(1, mioFile.getName());
    pstmt.setBinaryStream (2, fin, fileLength);

    il mio database ha quattro campi:

    Id - NomeFile - dimensioneFile - File


    ora come ora il codice che mi hai postato mi inserisce solo nome file e il file vero e proprio, non trovo come inserire anche la dimensione.....



    grazie ancora ciao ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    378
    funziona tutto, se non fosse per il campo ID che essendo il database in MySQL è autoincremental e non so come fare per farglielo prendere automaticamente.....



    Qualche idea ??? grazie ciao!

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.