Witam
Cały dzień spędziłem na wydawałoby się banalnej rzeczy a mianowicie połączeniu z ODBC przez JDBC
Mój program kopiuje plik access'a we wskazane przez użytkownika miejsce, a następnie "uzupełnia" bazę access'a danymi z programu. W ten sposób rozwiązałem problem eksportu do pliku access'a. Wszystko działa z poziomu eclipse, natomiast problem pojawia się w momencie wyeksportowania pliku do *.jar
Oto moja część programu która odpowiedzialna jest za błąd:
[Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego
public Connection getJDBCConnection(){
Connection con = null;
String plik=getSciezkaPlikuUzytkownika();
String url2 = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+plik;
shutdown();
JOptionPane.showMessageDialog(null, plik,"Uwaga",JOptionPane.WARNING_MESSAGE );
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch(java.lang.ClassNotFoundException e) {
InfoDialog.infoArea.append("Błąd!!! "+e.toString()+"\n");
czyBlad=true;
}
try {
con = DriverManager.getConnection(url2,username2, password2);
} catch(SQLException ex) {
ex.printStackTrace();
InfoDialog.infoArea.append("Błąd!!! "+ex.toString()+"\n");
czyBlad=true;
}
return con;
}
Choć to nie raczej nie wina kodu bo wszystko działa jak najlepiej z poziomu Eclipse.
Więc co zrobiłem do tej pory:
- Na kompie z winXP zarejestrowałem bazę danych. Na Win 7 niestety nie mogę tego zrobić bo nie widzi innych sterowników niż tylko SQL server - nie ma "Baza Access". Tak więc wyeksportowałem najpierw plik, później zarejestrowałem ten plik w narzędziach administracyjnych ... a następnie znowu wyeksportowałem do tego samego pliku. Oczywiście nie zadziałało.
- Dołączyłem do *.jar wszystkie biblioteki, zaznaczyłem również aby eksportował biblioteki java.
- Do build path projektu dodałem także rt.jar w którym podobno jest właśnie sun.jdbc.odbc.JdbcOdbcDriver
Tak więc kombinowałem na różne sposoby i nic nie wychodziło. Może ktoś podzieli się ze mną jakąś radą bo poziom zdenerwowania u mnie osiągnął maksimum.
[Edit:] Dalej problem nie rozwiązany, ale może komuś przyda się wyjaśnienie dwóch sposobów połączenia z bazą Access. Co prawda artykuł stary ale dalej wkleję również linka do Win 7.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2
http://devpinoy.org/blogs/comgen/archive/2010/11/28/windows-7-64bit-microsoft-access-2007-problem-solved-quot-architecture-mismatch-between-the-driver-and-application-quot.aspx
[Edit2:] To jednak musi być jakaś niezgodność pomiędzy wersjami Java zainstalowanymi w systemie. Ponieważ jak zmieniłem wersję javy w projekcie Eclipse to program również przestał działać z poziomu tego programu. Dodam że mam Win 7 64bit, JRE 1.6 64bit i eclipse 64bit.