27. juni 2003 - 13:08
Der er
13 kommentarer og 1 løsning
ODBC og Access
Hejsa! Jeg skal via java connecte til en accessdatabase, og bruger følgende driver: driverName = "sun.jdbc.odbc.JdbcOdbcDriver"; sourceURL = "JDBC:ODBC:TestDB"; Når jeg skal connecte til databasen, så bruger jeg følgende: dbCon = DriverManager.getConnection(sourceURL, user, pass); Og bruger så min connection til forespørgsler - ganske som fra bogen! MEN! databasen er beskyttet via et kodeord, og hvis jeg bruger putter det ind i min getConnection(), så melder den fejl.. Og der hører ingen bruger til det password, som access har (måske brugeren på maskinen?). Hvordan får jeg den til at connecte ordentligt med password?
Annonceindlæg fra QNAP
Prøvet med "" som bruger og så sætte passwordet ind?
Du kan når du opretter din Access ODBC source under avanceret sætte brugernavn og password. Password skal så sikkert være passwordet til databasen.
Jeg tror ikke at du kan angive det såkaldte "database password" via JDBC. Du kan bruger brugernavn & password via MDW fil via JDBC, men det er også noget helt andet.
hvad med dbCon = DriverManager.getConnection( "jdbc:odbc:navnetpåodbclinket" );
Her er noget der virker. ****Connection object**** import java.sql.*; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; import java.io.InputStream; import java.sql.ResultSet; import java.sql.Statement; public class DbConnection { private Connection con; public DbConnection() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) { System.out.println("Failed to load JDBC/ODBC driver."); return; } try { con = DriverManager.getConnection("jdbc:odbc:kunde2", "", ""); }// End Try catch (Exception e) { e.printStackTrace(); }// End Catch }//End Constructor public Connection getConnection() { return this.con; } }// End DbConnection ****DBAccess**** import java.sql.*; import java.net.URL; import java.util.*; public class DbAdgang { private DatabaseMetaData dma; private static Connection con; public DbAdgang() { OpenDb("Kunde6","",""); } public DbAdgang (String odbcdrv, String user, String passw) { OpenDb(odbcdrv, user, passw); } private void OpenDb(String odbcdrv, String user, String passw) { String url = "jdbc:odbc:"+odbcdrv; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(url,user, passw); dma = con.getMetaData(); System.out.println("Connected to: " + dma.getURL()); System.out.println("Driver " + dma.getDriverName()); }//slut try catch(Exception e){ System.out.println("her? " +e); }//slut catch } public void CloseDb() { try{ con.close(); } catch(Exception e){ System.out.println("Fejl vel close(): "+e); } } public static Connection getDbCon() { return con; } } Håber det kan hjælpe dig vh. Danni
Prøv lige at teste den kode med et database password - som altså ikke er det samme som et brugernavn+password.
ja så kommer der jo forhåbentligt fejl :-)
hvis du specificerer brugernavn og kodeord i access, så skal du rette alle de steder hvor jeg har ("kunde6","",""), til f.eks. ("kunde6",bruger","pw"). jeg er ikke god til at formulere mig, men forstår du?
31. juli 2003 - 11:26
#10
ja, men du skal regne med, at jeg skal ikke taste brugernavn ind, men kun password.. Det gør en forskel idet, at den tror, at der bare ingen bruger skal være.. Og det skal der åbenbart..
31. juli 2003 - 11:32
#11
Jeg tror desværre at min 27/06-2003 14:36:47 kommentar er korrekt. Det kan ikke lade sig gøre. Og du bliver nødt til at skifte security model til MDW username/password. (det virker til gengæld med JDBC !)
31. juli 2003 - 11:32
#12
Og det er vel egentligt et svar.
31. juli 2003 - 11:32
#13
Men nok et trist svar. :-(
27. august 2003 - 23:52
#14
bris> Tid at lukke spørgsmålet ?
Kurser inden for grundlæggende programmering