Scusate avete ragione...
La classe DB gestisce le query e le connessioni con il database.
Posto il codice:
codice:
public class DB {
Connection connection;
Statement statement;
ResultSet resultset;
PreparedStatement ps;
Messaggi m = new Messaggi();
//connessione db
private void connetti() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/foto?user=root&password=fausto&useUnicode=true&characterEncoding=UTF-8");
statement = connection.createStatement();
} catch (SQLException ex) {
m.mostraErrato("impossibile connettersi al DataBase" + ex);
} catch (ClassNotFoundException ex) {
m.mostraErrato("" + ex); } }
private void disconnetti() {
try {
connection.close();
statement.close();
} catch (SQLException ex) {
m.mostraErrato("" + ex); } }
//preleva array di foto
public ArrayList getFoto(int id_veicolo) {
ArrayList listaFoto = new ArrayList();
try {
connetti();
String sql = "select * from foto where id_veicolo='" + id_veicolo + "'";
resultset = statement.executeQuery(sql);
while (resultset.next()) {
Foto foto = new Foto();
foto.setId(resultset.getInt("id")); foto.setFoto(resultset.getBytes("foto")); foto.setDescrizione(resultset.getString("descrizione")); foto.setId_veicolo(resultset.getInt("id_veicolo"));
listaFoto.add(foto );
}
disconnetti();
} catch (Exception ex) {
Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);
} return listaFoto; }
//aggiunge foto in db
public boolean addFoto(Foto foto) {
boolean ok;
try {
connetti();
String sql = "select * from foto where descrizione='" + foto.getDescrizione() + "' and id = '" + foto.getId()+ "' ";
resultset = statement.executeQuery(sql);
if (resultset.next() == false) {
String ins = "insert into foto(foto,id_veicolo,descrizione) values("
+ "'" + foto.getFoto() + "',"
+ "'" + foto.getId_veicolo()+ "',"
+ "'" + foto.getDescrizione() + "'"
+ ")";
statement.execute(ins);
disconnetti();
ok = true;
} else {
ok = false;
}
} catch (Exception ex) {
Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex);
ok = false;
}
return ok;
}
//class Foto
public class Foto {
private int id;
private byte[] foto;
private String descrizione;
private int id_veicolo;
public Foto() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public byte[] getFoto() {
return foto;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public int getId_veicolo() {
return id_veicolo;
}
public void setId_veicolo(int id_veicolo) {
this.id_veicolo = id_veicolo;
}
}
//class FileChooserDemo
public class FileChooserDemo2 extends JPanel {
private JFileChooser fc;
private Veicolo veicolo;
DB db = new DB();
public FileChooserDemo2(Veicolo v) {
this.veicolo = v;
if (fc == null) {
fc = new JFileChooser();
fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);
fc.setFileView(new ImageFileView());
fc.setAccessory(new ImagePreview(fc));
fc.setMultiSelectionEnabled(true);
}
int returnVal = fc.showDialog(FileChooserDemo2.this, "Seleziona foto...");
if (returnVal == JFileChooser.APPROVE_OPTION) {
File[] selection = fc.getSelectedFiles();
for(File file : selection) {
byte[] b = new byte[(int) file.length()];
try {
FileInputStream fis = new FileInputStream(file);
try {
fis.read(b);
} catch (IOException ex) {
Logger.getLogger(FileChooserDemo2.class.getName()).log(Level.SEVERE, null, ex);
}
try {
fis.close();
} catch (IOException ex) {
Logger.getLogger(FileChooserDemo2.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(FileChooserDemo2.class.getName()).log(Level.SEVERE, null, ex);
}
//JOptionPane.showMessageDialog(null, file.length());
Foto foto = new Foto();
foto.setFoto(b);
int idVeicolo = db.prendiIDVeicolo();
foto.setId_veicolo(idVeicolo);
db.addFoto(foto);
}
}
fc.setSelectedFile(null);
}
}
dopo aver caricato le immagini ne db vorrei prelevarne una in base all'id del veicolo e
visualizzarla in una jlabel