[JAVA/ODBC] Data source name not found*

Pagina: 1
Acties:

  • Horla
  • Registratie: Augustus 2002
  • Laatst online: 07-04 14:40
Voor school moeten we een programma schrijven in java met Together Architect 2006 for Eclipse. Nu moeten we een connectie maken met een database. Het probleem is dat ik telkens de volgende error krijg:
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Het vreemde is dat de code bij mijn 2 collegas zonder problemen werkt. Zelfs bij voorbeeldcode krijg ik de error. In de code staat:
code:
1
2
3
 // JDBC driver name and database URL
  private static final String JDBC_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
  private static final String DATABASE_URL = "jdbc:odbc:MS Access-database;DBQ=books";

Ik heb al een aantal uur op google zitten zoeken zonder resultaat. Als ik kijk bij Administrative tools --> Data sources (ODBC) op tabblad drivers dan zie ik dat mijn ODBC drivers zijn geinstalleerd.

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
En als je jouw code op hun pc probeert?

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

heb je wel je MS Access database gemapped in je ODBC gedoe... onder dezelfde naam die je gebruikt om te connecten?

  • Horla
  • Registratie: Augustus 2002
  • Laatst online: 07-04 14:40
De code is perfect hetzelfde aangezien we samen aan hetzelfde project werken.
heb je wel je MS Access database gemapped in je ODBC gedoe... onder dezelfde naam die je gebruikt om te connecten?
Dit heb ik al een aantal keer gelezen maar weet niet goed of ik het juist heb gedaan. Bij de ODBC Administrator bij tabblad System DNS een "Microsoft Access Driver" toegevoegd met dezelfde naam als mijn database. Maar daar staat ook een "Microsoft Access-Treiber" (duitse driver?) en een "driver do Microsoft Access".

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Horla schreef op woensdag 08 maart 2006 @ 09:06:
De code is perfect hetzelfde aangezien we samen aan hetzelfde project werken.

[...]

Dit heb ik al een aantal keer gelezen maar weet niet goed of ik het juist heb gedaan. Bij de ODBC Administrator bij tabblad System DNS een "Microsoft Access Driver" toegevoegd met dezelfde naam als mijn database. Maar daar staat ook een "Microsoft Access-Treiber" (duitse driver?) en een "driver do Microsoft Access".
De naam van de ODBC datasource moet "books" zijn, althans, daar verwijs je naar in je connectionstring. En volgens mij haal je 2 dingen door elkaar. Wanneer je een datasource gecreeerd hebt hoef je niet meer op te geven wat voor database het is, dat is nu juist waar odbc voor is.

voorbeeldje, van: http://www.rgagnon.com/javadetails/java-0107.html:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyConnection {
  public static Connection getConnection() throws Exception {
     Driver d = (Driver)Class.forName
         ("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
     Connection c = DriverManager.getConnection
         ("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/temp/tech97.mdb");
     return c;
     /*
     To use an already defined ODBC Datasource :    
     
        String URL = "jdbc:odbc:myDSN";
        Connection c = DriverManager.getConnection(URL, "user", "pwd"); 
        
     */     
    }
  }


In dit voorbeeldje 2 mogelijkheden: de eerste op basis van soort db + pad naar db, de 2de (uitgecommectarieerd) op basis van een dsn.

[ Voor 9% gewijzigd door zneek op 08-03-2006 09:22 ]


  • Horla
  • Registratie: Augustus 2002
  • Laatst online: 07-04 14:40
Het vreemde is dat die code die ik heb gepost code is die rechtstreeks van de prof komt zodat het zeker zou werken. Ook vind ik het nog altijd raar dat het zonder problemen werkt bij 2 andere mensen. Ik vermoed dat het aan mijn versie van Access ligt want ik heb het nu op 2 pc's van mij geprobeerd (zelfde windows en office versie) en daarop werkt het niet.
Maar ik heb mijn code aangepast adhv jouw voorbeeld en heb dit van gemaakt:
code:
1
2
3
private static final String JDBC_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
private static final String DATABASE_URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Borland/Together/Architect2006/workspace/ConnectieJavaAccess/books.mdb";
//private static final String DATABASE_URL = "jdbc:odbc:MS Access-database;DBQ=books";

Niet idiaal maar het werkt

edit: Dit werkt ook en ziet er veel beter uit
code:
1
private static final String DATABASE_URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=books";

[ Voor 13% gewijzigd door Horla op 08-03-2006 09:36 ]


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Horla schreef op woensdag 08 maart 2006 @ 09:35:
Het vreemde is dat die code die ik heb gepost code is die rechtstreeks van de prof komt zodat het zeker zou werken. Ook vind ik het nog altijd raar dat het zonder problemen werkt bij 2 andere mensen. Ik vermoed dat het aan mijn versie van Access ligt want ik heb het nu op 2 pc's van mij geprobeerd (zelfde windows en office versie) en daarop werkt het niet.
Maar ik heb mijn code aangepast adhv jouw voorbeeld en heb dit van gemaakt:
code:
1
2
3
private static final String JDBC_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
private static final String DATABASE_URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Borland/Together/Architect2006/workspace/ConnectieJavaAccess/books.mdb";
//private static final String DATABASE_URL = "jdbc:odbc:MS Access-database;DBQ=books";

Niet idiaal maar het werkt

edit: Dit werkt ook en ziet er veel beter uit
code:
1
private static final String DATABASE_URL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=books";
Volgens mij zou dit ook moeten werken:
code:
1
private static final String DATABASE_URL = "jdbc:odbc:books";


Sterker nog, dit vind ik eigenlijk de enige nette manier. Odbc is een generieke tussenlaag, waarmee je in principe database-soort onafhankelijk zou moeten kunnen werken, en zou je dus eigenlijk die verwijzing naar Access niet moeten hoeven doen. Maar goed, voor een school opdrachtje moeten we ook niet te moeilijk gaan doen :) Als je nog eens wat meer serieuze opdrachten moet maken zul je toch snel overgaan op iets als Hibernate.

[ Voor 9% gewijzigd door zneek op 08-03-2006 19:36 ]


  • Horla
  • Registratie: Augustus 2002
  • Laatst online: 07-04 14:40
Sorry dat ik je moet teleurstellen maar dat werkt niet :+

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 10:08
Horla schreef op woensdag 08 maart 2006 @ 23:21:
Sorry dat ik je moet teleurstellen maar dat werkt niet :+
Toch zou dat moeten werken als de ODBC datasource goed is geconfigureerd.
Pagina: 1