PDA

Visualizza la versione completa : [JAVA] gestione connessione database


anatroccolo
21-09-2004, 08:24
Il mio problemino è questo:

Mi connetto tramite JAVA ad un database Access, riesco con il comando

Result.next();

a scorrere i record ma il comando

Result.previous();

mi genera un eccezione. Penso perchè il ResultSet si Forward_only ma
non riesco ad impostarlo altrimenti, ho provato con

setFetchDirection(int Direction);

ma non so cosa mettere come Direction.

Questo è il codice mi potete aiutare.

Ciao e grazie



public static void main(String[] args) {

Connessione Connect = new Connessione();
Access ist = new Access(Connect);


}

Connessione (){
try{
// aggancio il driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch(ClassNotFoundException e){
System.out.println("Driver non trovato");
System.exit(0);
}
try{
// mi connetto al DB soc tramite il ponte dei driver jdbc:odbc <
dbURL = "jdbc:odbc:Ark";
con = DriverManager.getConnection(dbURL);
} catch(SQLException sql){
System.out.println("Errore connessione"); System.exit(0);
}
try {
// avviso che sto creando una query, uno statement
st = con.createStatement();
} catch(SQLException s){
System.out.println("Errore creazione statement");
}
try{
// chiedo di eseguire una select il cui output venga messo // in una result table
rs = st.executeQuery("SELECT * FROM Archivio ORDER BY NOME");
} catch(SQLException esql){
System.out.println("Errore esecuzione statement");
}

}

public String Avanti() {
try{
// finchè ci sono tuple le prelevo (fetch)
rs.next();
return rs.getString(1);
}
catch(SQLException as){
System.out.println("Errore selzione dati");
return "Errore";
}
}

public String Indietro() {
try{
// finchè ci sono tuple le prelevo (fetch)
rs.previous();
return rs.getString(1);
}
catch(SQLException as){
System.out.println("Errore selzione dati");
return "Errore";
}
}

public void Chiudi() {
try{
// quando ho finito chiudo prima lo statement
// poi la connessione

st.close();
con.close();
} catch(SQLException ad){
System.out.println("errore chiusura DB");

}
}
}

pippo75
21-09-2004, 09:16
nel creare lo statement, devi definirlo nel modo seguente:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSIT IVE, ResultSet.CONCUR_UPDATABLE);

mandi :ciauz:

anatroccolo
21-09-2004, 10:34
Originariamente inviato da anatroccolo


public String Avanti() {
try{
// finchè ci sono tuple le prelevo (fetch)
rs.next();
return rs.getString(1);
}
catch(SQLException as){
System.out.println("Errore selzione dati");
return "Errore";
}
}



OK funziona.... ma ancora una cosa se possibile.

con questa funzione passo il contenuto della prima colonna del
database (una stringa) ad una Textbox.
Ma se volessi passare i dati di ulteriori colonne ad altre textbox come potrei fare???

Grazie ancora.

pippo75
21-09-2004, 10:38
bo, non so, te li puoi salvare in un array di stringhe e tornare quello
poi associ ad ogni elemento dell'array il valore nelle textbox

denis76
21-09-2004, 21:03
Vorresti leggere il contenuto di n colonne senza sapere di che tipo esse siano?

anatroccolo
22-09-2004, 08:42
Originariamente inviato da denis76
Vorresti leggere il contenuto di n colonne senza sapere di che tipo esse siano?

Se fossero tutte di tipo String potrebbe andar bene il metodo suggerito da pippo75????

Nel caso contrario come si potrebbe fare???

:ciauz:

denis76
22-09-2004, 09:04
resultset.getObject()
Il tipo di dato lo trovi nel MetaData. Se vuoi nel pomeriggio ti mando un frammento di codice a proposito.

anatroccolo
22-09-2004, 11:34
Originariamente inviato da denis76
resultset.getObject()
Il tipo di dato lo trovi nel MetaData. Se vuoi nel pomeriggio ti mando un frammento di codice a proposito.

Sicuramente mi potrebbe servire, ti ringrazio molto.

Ciao

denis76
22-09-2004, 14:26
Dunque:

Questo metodo ti dice quante colonne ci sono in una tabella,
resultset.getMetaData().getColumnCount()

Questo ti dice che tipo di valori contiene una colonna,
resultset.getMetaData().getColumnTypeName()

Questo preleva il valore di qualsiasi tipo sia diverso da file binario.
resultset.getObject()

Ciao ciao, Denis.

Loading