2012-03-02 21 views
5

32 bit JVM kullanarak derlendiğinde, ancak 64 bit JVM kullanmaya çalışırsanız sorunları olan bir programım var. Aldığım mesaj: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". Ben gibi kod kullanarak Excel ve SQL Server veritabanlarına bağlanmak için çalışıyorumJava 64 bit JDBC-ODBC sürücü sorunları

aşağıdadır:

String file = directory + "/fileName.xlsm"; 

String connectStr= "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + file + ";READONLY=false"; 

try { 
    Class.forName(getDriver()); 
    gConnection = DriverManager.getConnection(connectStr); 
    //do stuff with connection 
} 

Ben sürücülerin 64 bit sürümünü olması o görünmüyordu Sürücü Yöneticisi kontrol çalıştığımızda . Bunu kolayca düzeltmek ve bilgisayardaki ayarları manuel olarak değiştirmeden 64 bit sürücüler kullanarak bağlanabilmek için (bu program birden çok bilgisayara dağıtılacağından ve bilgisayar için ayrı ayrı bir sürücü indirmek zorunda kalmak istemiyorum) çalıştırmak istiyor)? Ayrıca, 64-bit sürücüleri kullanarak bağlanmak için daha verimli mi, yoksa 32-bit olanları iyi/hızlı (çok büyük veri kümeleri var, bu yüzden küçük farklar bir fark yaratacak) mi?

+0

Excel'in hangi sürümü? Office 2010 öncesinde sürücüler sadece 32 bit idi. – vulkanino

+0

oh, pardon. Ayrıca, 2010. MS Office 32-bit, ancak 64-bit sürücüleri kullanmak hala mümkün olduğunu varsayalım? – scaevity

+0

bunu deneyin: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255#Overview – vulkanino

cevap

1

64 bit uygulamalar, 32 bit ODBC sürücüleri kullanamaz ve bunun tersi de bu hata iletisini alıyorsunuzdur. Hangi ODBC sürücülerinin 32 bit (C: \ Windows \ SysWow64 \ odbcad32.exe) ve 64 bit (C: \ Windows \ System32 \ odbcad32.exe) ODBC Veri Kaynağı yöneticisi (Sürücüler sekmesi) çalıştırılarak kullanılabilir olduğunu doğrulayabilirsiniz. sırasıyla - 64-bit bir sistemde. Adlandırma ilk başta kafa karıştırıcıdır.

Çalıştığım bir uygulamada benzer bir sorun vardı - Access/Excel ODBC sürücüsü yalnızca 32-bitti, yani 64-bit'te çalıştırıldığında, uygulamanız Excel veya Access veritabanı dosyalarını açmayı başaramadı. Sonunda, Excel ve diğer Office belgelerini doğrudan okuyabilen/yazabilen bir Java kütüphanesi olan Apache POI library'u kullanmaya başladık. Bir denemeyi vermeyi düşünmek isteyebilirsiniz, bununla birlikte bir miktar çalışma gerektirecektir.

Şu anda, Office 2010 henüz dışarıda değildi. Office 2010'da bir 64-bit ODBC sürücüsü oluşturduklarını fark etmedim ve şu anda meşru bir seçenek olup olmadığını görmek zorunda kalacaklar ... bir Java uygulamasında ODBC'ye güvenmekten hoşlanmıyorum bile.