PDA

Visualizza la versione completa : [Java] Connessione a database.


denis76
05-07-2004, 13:50
E' possibile aprire un file .mdb senza configurare un alias in JDBC-ODBC ma puntanto direttamente al file?

Grazie mille.

LeleFT
05-07-2004, 14:59
Io ho utilizzato questa stringa di connessione per Access e ha sempre funzionato:


Class.forName("com.mysql.jdbc.Driver");
String qsdb = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:/path/db.mdb";
Connection db = DriverManager.getConnection(qsdb);


Ciao. :ciauz:

nik600
05-07-2004, 17:28
scusate la domanda ma una volta creata una connessione di questo tipo, posso utilizzare i recordset come ad esempio si utilizzano in asp? o la sintassi diversa?

grazie :ciauz:

LeleFT
05-07-2004, 18:12
Non so come si utilizzino in ASP i RecordSet, comunque il package java.sql mette a disposizione l'interfaccia ResultSet.
Attraverso i metodi forniti da questa interfaccia possibile scorrere i dati risultanti da una query. Esempio:


...// Creo la connessione col DB in un oggetto chiamato db

// Creo un oggetto Statement per eseguire le query:
Statement stmt = db.createStatement();

// Eseguo la query e la memorizzo in un ResultSet
ResultSet rs = stmt.executeQuery("SELECT campo FROM tabella");

// Scorro il ResultSet e stampo i risultati
while ( rs.next() ) {
System.out.println( rs.getString(1) );
}

// Chiudo tutto
rs.close(); // chiudo il ResultSet
stmt.close(); // chiudo lo Statement
db.close(); // chiudo la connessione


Ciao. :ciauz:

denis76
06-07-2004, 16:07
Ottengo l'errore

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
java.sql.SQLException: No suitable driver

LeleFT
06-07-2004, 16:18
Perch ho preso del codice di connessione con MySQL senza modificare la stringa...
Modifica la prima riga cos:


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


Ciao. :ciauz:

denis76
06-07-2004, 16:52
Sai mica qual il comando sql per avere l'elenco delle tabelle contenute in un database?

Grazie mille.

LeleFT
06-07-2004, 17:01
Beh... credo che dipenda dal DMBS. Per MySQL esiste il comando show tables, ma, appunto, un comando del dbms, non un'istruzione SQL. Non credo che SQL abbia una simile istruzione, dato che chi usa un DB deve conoscerne a priori lo schema... :bh:


Ciao. :ciauz:

Angelo1974
06-07-2004, 17:34
Ciao; in java si dovrebbe fare una cosa del tipo:


import java.net.URL;
import java.sql.*;

class JDBCapp {
static myConnection theConn;

public static void main (String args[]) {
new JDBCapp().doit();
}

public void doit() {
theConn = new myConnection();
theConn.Connect2Db("myDSN", "user", "password");
try {
ResultSet rs1;
ResultSet rs2;
String ss, tblnames = "";
DatabaseMetaData dmd = theConn.dbConn.getMetaData();
rs1 = dmd.getSchemas();
while(rs1.next()) {
ss = rs1.getString(1);
rs2 = dmd.getTables(null,ss, "%",null);
while(rs2.next())
tblnames += rs2.getString(3) + " " + rs2.getString(4) + "\n\r";
}
System.out.println("Tables :");
System.out.println(tblnames);
}
catch (Exception e) { e.printStackTrace(); }
}
}

class myConnection {
Connection dbConn = null;
void Connect2Db(String db, String user, String passw) {
try {
Driver d =
(Driver)Class.forName
("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
// URL corresponding to the ODBC DSN
String URL = "jdbc:odbc:" + db;
// DB logon
dbConn =
DriverManager.getConnection(URL, user, passw);
}
catch (Exception e) {
e.printStackTrace();
}
}

void Disconnect2Db() {
try {
dbConn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}






non l'ho provato ma dovrebbe andare; in sql mi sa che LeleFt ha ragione. Ciao

denis76
06-07-2004, 17:37
S, la funziona va. Ora devo capire come riuscire a sapere quali sono le tabelle contenute in un archivio mdb e come sono fatte.

Loading