Scusate ragazzi ho un grosso problema.
Ho deciso di utilizzare come database per la mia applicazione un database JavaDb in maniera tale da poterlo integrare con la mia applicazione e renderla portabile al massimo integrando tutto al suo interno.
Ho scaricato il driver Derby.jar
ma sto avendo dei grossi problemi ho seguito diverse guide su come creare ild atabase con eclipse (utilizzo queto come ide) ma nietne il database l'ho creato ed ho creato anche una tabella ma ho dei problemi nel collegare la mia appicazione al database.
codice:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
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 = "bircastri271187";
this.pwdUtente = "pentathlon271187";
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("org.apache.derby.jdbc.EmbeddedDriver");
// 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
Connection dbConnection = null;
String strUrl = "jdbc:derby:ICECREAM;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl);
} catch (SQLException sqle) {
sqle.printStackTrace();
}
} 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:derby://localhost:1527/" + nomeDB + "?user=" + nomeUtente);
} else {
db = DriverManager.getConnection("jdbc:derby://localhost:1527/ICECREAM" + " user "+"bircastri271187" +" password "+ "pentathlon271187");
// La connessione necessita della password
/* Connection dbConnection = null;
String strUrl = "jdbc:derby:ICECREAM;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl);
} catch (SQLException sqle) {
sqle.printStackTrace();
}*/
}
}
// 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;
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();
//rsmd = rs.getMetaData();
colonne = rsmd.getColumnCount();
//qualche modifica qui, in modo che si lavori su Vector piuttosto
//che su String[]
while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet
Vector record = new Vector();
for (int i=0; i<colonne; i++) {
record.add(rs.getString(i+1));
}
v.add(record);
}
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 una mano l'errore che mi da eclipse é:No suitable driver found for jdbc:derby://localhost:1527/ICECREAM user bircastri271187 password pentathlon271187