Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Salvare un tipo di file in un campo di tipo blob

    come da titolo, come posso salvare un file prelevato mediante jfilechooser in un campo del mio db di tipo blob??? devo per caso effettuare qualche conversione???
    Grazie a tutti

  2. #2
    gentilmente mi aiutereste???

  3. #3
    Che DB usi?

    Cmq così dovrebbe andare:

    Codice PHP:
    PreparedStatement pstmt conn.prepareStatement ("INSERT INTO tabella (campoBLOB) VALUES (?)");
    File fBlob = new File "tuoFile.ext" );
    FileInputStream is = new FileInputStream fBlob );
    pstmt.setBinaryStream (1is, (int) fBlob.length() );
    pstmt.execute ();
    ... 
    Al mio segnale... scatenate l'inferno!

  4. #4
    utilizzo MiSql....ma a che serve l'istruzione FileInputStream is = new FileInputStream ( fBlob )???
    Il file non viene creato con l'istruzione File fBlob = new File ( "tuoFile.ext" )???
    E poi perchè l'istruzione pstmt.setBinaryStream (1, is, (int) fBlob.length() ) ha tre valori in input???
    Grazie mille mi saresti di grande aiuto perchè è un argomento delicato per un neofita come me...
    Cordiali saluti.

  5. #5
    Originariamente inviato da R@ve M@ster
    Che DB usi?

    Cmq così dovrebbe andare:

    Codice PHP:
    PreparedStatement pstmt conn.prepareStatement ("INSERT INTO tabella (campoBLOB) VALUES (?)");
    File fBlob = new File "tuoFile.ext" );
    FileInputStream is = new FileInputStream fBlob );
    pstmt.setBinaryStream (1is, (int) fBlob.length() );
    pstmt.execute ();
    ... 
    Ho provato ad utilizzare queste istruzioni ma non funzionano...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Prova così:
    codice:
    PreparedStatement pstmt = conn.prepareStatement ("INSERT INTO tabella (campoBLOB) VALUES (?)");
    File fBlob = new File ( "tuoFile.ext" );
    FileInputStream is = new FileInputStream ( fBlob );
    pstmt.setBinaryStream (1, is, fBlob.available() );
    pstmt.execute ();
    La prima istruzione crea un oggetto di tipo File (un descrittore)
    La seconda crea uno stream di input per la lettura del file.
    La terza dice alla Statement che il primo (e unico) parametro della query va valorizzato prendendo i dati dall'InputStream e che tale campo avrà la lunghezza specificata (la lunghezza del file: is.available() ).
    L'ultima dà il via all'esecuzione della query.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Ma la query non potrebbe essere settata mediante setblob al posto di setbinarystream?

  8. #8
    Originariamente inviato da stefano085
    Ma la query non potrebbe essere settata mediante setblob al posto di setbinarystream?
    il metodo setBlob riceve come parametro un blob. potrebbe essere usato se tu prelevassi un blob da una tabella e lo inserissi poi in un'altra. Ma tu hai un file
    Al mio segnale... scatenate l'inferno!

  9. #9
    Originariamente inviato da LeleFT
    Prova così:
    codice:
    PreparedStatement pstmt = conn.prepareStatement ("INSERT INTO tabella (campoBLOB) VALUES (?)");
    File fBlob = new File ( "tuoFile.ext" );
    FileInputStream is = new FileInputStream ( fBlob );
    pstmt.setBinaryStream (1, is, fBlob.available() );
    pstmt.execute ();
    La prima istruzione crea un oggetto di tipo File (un descrittore)
    La seconda crea uno stream di input per la lettura del file.
    La terza dice alla Statement che il primo (e unico) parametro della query va valorizzato prendendo i dati dall'InputStream e che tale campo avrà la lunghezza specificata (la lunghezza del file: is.available() ).
    L'ultima dà il via all'esecuzione della query.


    Ciao.
    salve a tutti ho provato quest'altro codice, ma il metodo available() non è un metodo per il tipo di dato File....Qualcuno sa come posso fare???

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da stefano085
    salve a tutti ho provato quest'altro codice, ma il metodo available() non è un metodo per il tipo di dato File....Qualcuno sa come posso fare???
    Ho scritto io una fesseria:
    codice:
    pstmt.setBinaryStream (1, is, is.available() );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.