Salve tutti ragazzi,
ho creato un piccolo database e l'ho importato in java.
Fin qui tutto ok, ho creato una piccola Query sul database e salvato il risultato in un vettore "v". Ho implementato velocemente un piccolo ciclo per vedere se il vettore v era pieno oppure vuoto invece il vettore v viene inizializzato correttamente con tutti i campi presenti nel database.
Adesso però vorrei che questi campi vengano visualizzato all'interno di una JTable in java. E' possibile fare ciò??
Vi posto il codice delle due classi:
CLASSE AllFrameDesktopContainer.JAVA
Questa invece è la classe relativa alla gesitone del database.
Mi potete dare un aiutinooo.
Grazie fin da ora per le vostre risposte
ho creato un piccolo database e l'ho importato in java.
Fin qui tutto ok, ho creato una piccola Query sul database e salvato il risultato in un vettore "v". Ho implementato velocemente un piccolo ciclo per vedere se il vettore v era pieno oppure vuoto invece il vettore v viene inizializzato correttamente con tutti i campi presenti nel database.
Adesso però vorrei che questi campi vengano visualizzato all'interno di una JTable in java. E' possibile fare ciò??
Vi posto il codice delle due classi:
CLASSE AllFrameDesktopContainer.JAVA
Codice:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class AllFrameDesktopContainer{
JDesktopPane desk;
public int i;
JInternalFrame iframe;
JFrame frame;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
public static void main(String[] args) {
AllFrameDesktopContainer d = new AllFrameDesktopContainer();
}
public AllFrameDesktopContainer(){
frame = new JFrame("IceCream 1.0");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desk = new JDesktopPane();
Database db = new Database("iceCream");
if ( !db.connetti() ) {
System.out.println("Errore durante la connessione al database :(");
System.out.println( db.getErrore() );
System.exit(0);
}
else{
System.out.println("Mi sono connesso");
}
//eseguo una query sul database.
Vector v = db.eseguiQuery( "SELECT * FROM Ingredienti;" );
while ( i<v.size() ) {
String[] record = (String[]) v.elementAt(i);
System.out.println("Record numero " + (i+1) );
for (int j=0; j<record.length; j++) {
System.out.println( record[j] );
}
i++;
}
Vector<String> columnName = new Vector<String>();
try{
iframe = new JInternalFrame("Internal Frame: " , true, true, true, true);
iframe.setVisible(true);
desk.add(iframe);
}
catch(NumberFormatException ne){
System.exit(0);
}
//creo il Menù Principale
JMenuBar menubar = new JMenuBar();
//creo il menù file
JMenu count = new JMenu("File");
count.addMenuListener(new MyAction());
menubar.add(count);
//creo il menù Exit
JMenu exit = new JMenu("Exit");
exit.addMenuListener(new Esci());
menubar.add(exit);
frame.setJMenuBar(menubar);
frame.add(desk);
frame.setSize(800,600);
frame.setVisible(true);
//adesso crero una tabella
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
DefaultTableModel model = new DefaultTableModel();
model.setDataVector(v, columnName);
jTable1.setModel(model);
jScrollPane1.setName("jScrollPane1");
jTable1.setName("jTable1");
jScrollPane1.setViewportView(jTable1);
iframe.getContentPane().add(jScrollPane1);
iframe.pack();
}
public class MyAction implements MenuListener{
public void menuSelected(MenuEvent me){
}
public void menuCanceled(MenuEvent me){}
public void menuDeselected(MenuEvent me){}
}
public class Esci implements MenuListener{
public void menuSelected(MenuEvent me){
System.exit(0);
}
public void menuCanceled(MenuEvent me){}
public void menuDeselected(MenuEvent me){}
}
}
Questa invece è la classe relativa alla gesitone del database.
Codice:
import java.sql.*;
import java.util.Vector;
import javax.swing.JTable;
public class Database {
private String nomeDB; // Nome del Database a cui connettersi
private String nomeUtente; // Nome utente utilizzato per la connessione al Database
private String pwdUtente; // Password usata per la connessione al Database
private String errore; // Raccoglie informazioni riguardo l'ultima eccezione sollevata
private static Connection db; // La connessione col Database
private boolean connesso; // Flag che indica se la connessione è attiva o meno
private String[][] cells = null;
private String[] columnsName=null;
public Database(String nomeDB) { this(nomeDB, "", ""); }
public JTable tabella;
public Database(String nomeDB, String nomeUtente, String pwdUtente) {
this.nomeDB = nomeDB;
this.nomeUtente = "root";
this.pwdUtente = "pentathlon";
connesso = false;
errore = "";
}
// Apre la connessione con il Database
public boolean connetti() {
connesso = false;
try {
// Carico il driver JDBC per la connessione con il database MySQL
Class.forName("com.mysql.jdbc.Driver");
// Controllo che il nome del Database non sia nulla
if (!nomeDB.equals("")) {
// Controllo se il nome utente va usato o meno per la connessione
if (nomeUtente.equals("")) {
// La connessione non richiede nome utente e password
db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB);
} else {
// La connessione richiede nome utente, controllo se necessita anche della password
if (pwdUtente.equals("")) {
// La connessione non necessita di password
db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente);
} else {
// La connessione necessita della password
db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
}
}
// La connessione è avvenuta con successo
connesso = true;
} else {
System.out.println("Manca il nome del database!!");
System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");
System.exit(0);
}
} catch (Exception e) { errore = e.getMessage(); }
return connesso;
}
// Esegue una query di selezione dati sul Database
// query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire
// colonne: il numero di colonne di cui sarà composta la tupla del risultato
// ritorna un Vector contenente tutte le tuple del risultato
public Vector eseguiQuery(String query) {
Vector v = null;
String [] record;
int colonne = 0;
try {
Statement stmt = db.createStatement(); // Creo lo Statement per l'esecuzione della query
ResultSet rs = stmt.executeQuery(query); // Ottengo il ResultSet dell'esecuzione della query
v = new Vector();
ResultSetMetaData rsmd = rs.getMetaData();
colonne = rsmd.getColumnCount();
System.out.println(colonne);
while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet
record = new String[colonne];
for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
v.add( (String[]) record.clone() );
}
rs.close(); // Chiudo il ResultSet
stmt.close(); // Chiudo lo Statement
} catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
return v;
}
// Esegue una query di aggiornamento sul Database
// query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire
// ritorna TRUE se l'esecuzione è adata a buon fine, FALSE se c'è stata un'eccezione
public boolean eseguiAggiornamento(String query) {
int numero = 0;
boolean risultato = false;
try {
Statement stmt = db.createStatement();
numero = stmt.executeUpdate(query);
risultato = true;
stmt.close();
} catch (Exception e) {
e.printStackTrace();
errore = e.getMessage();
risultato = false;
}
return risultato;
}
//metodo aggiunto da me
public int getRowCount() {
return cells.length;
}
//metodo aggiunto da me
public int getColumnCount() {
return columnsName.length;
}
//metodo aggiunto da me
public Object getValueAt(int r, int c)
{
return (String)cells[r][c];
}
//metodo aggiunto da me
public String getColumnName(int c)
{
return columnsName[c];
}
// Chiude la connessione con il Database
public void disconnetti() {
try {
db.close();
connesso = false;
} catch (Exception e) { e.printStackTrace(); }
}
public boolean isConnesso() { return connesso; } // Ritorna TRUE se la connessione con il Database è attiva
public String getErrore() { return errore; } // Ritorna il messaggio d'errore dell'ultima eccezione sollevata
}
Mi potete dare un aiutinooo.
Grazie fin da ora per le vostre risposte