مشاكل مع JDBC-ODBC ، وسلاسل اتصال أقل من DSN ، ونظام التشغيل Windows 7-bit 7

StackOverflow https://stackoverflow.com/questions/3808633

سؤال

أنا أتعامل مع مشكلة نشأت عن تطبيق كنت أعمل عليه يتصل بملف وصول عبر JDBC-ODBC. على منصات Windows الأخرى ، لم تتم مواجهة هذه المشكلة ، ولكن على صناديق Windows 7 64 بت ، في محاولة للاتصال مع سلاسل الاتصال DSN:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

تمت محاولة اختلافات متعددة على السلسلة ، لكن جميعها قد أعادت نفس الخطأ. إليك كيفية محاولة الاتصال حاليًا:

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

  StringBuffer databaseConnectionString;

  if (SystemUtils.IS_OS_WINDOWS_7) {
       databaseConnectionString = new StringBuffer("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=");
       databaseConnectionString.append(databaseFile);

  } else {
       databaseConnectionString = new StringBuffer("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
       databaseConnectionString.append(databaseFile);
       databaseConnectionString.append(";DriverID=22;READONLY=false}");
  }

يؤكد فحص برنامج التشغيل في مسؤول مصدر بيانات ODBC 32 بت على وجود برامج التشغيل. ومع ذلك ، عند استخدام regedt32.exe لفحص برامج تشغيل ODBC (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers), ، لا يظهر أي منهم.

هل يمكن لأي شخص أن يساعد في إلقاء بعض الضوء على هذا؟

هل كانت مفيدة؟

المحلول

لقد وجدت أن المشكلة هي أنني كنت أدير البرنامج في جافا 64 بت. على الرغم من أنني لم أكن قد نجح في اكتشاف البرنامج ما إذا كان يعمل في Java 32 بت أو 64 بت ، فقد قمت بحل الحل عن طريق تثبيت بيئة تشغيل Java 32 بت واستخدام ملف .bat الذي يقرأ على النحو التالي:

@echo off

"C:\Program Files (x86)\Java\jre6\bin\java" -D32 -Xmx1024m -jar programName.jar

شكرا للمساعدة!

نصائح أخرى

كان هذا تحديًا صعبًا نظرًا لندرة رسائل الخطأ ذات مغزى من برنامج تشغيل Java أو MS's ODBC. كانت الإجابات المذكورة أعلاه حول Down Research إلى 32bit Java و MS Access (باستخدام AccessDatabaseengine.exe من MS) تعمل ولكن تكلف عقوبة كبيرة (حوالي 30 ٪) في معالجة الإجراءات الأخرى مقارنة باستخدام 64bit java. كنت غير راغب في دفع هذا السعر ، لذا قمت بتثبيت 64 بت Java (بالتزامن مع 32 بت ، سواء في دليل منفصل C: Java 32 أو 64). كانت مشكلة الدليل الأخيرة هذه مهمة بالنسبة لي لأنني كنت أستخدم Apache Geronimo ولن تبدأ إذا تم تثبيت Java في ملفات البرنامج (x86) ... حيث بدا (x86) أن يقتل تحليل ملفات الدفعة. قمت بعد ذلك بإلغاء تثبيت Access 32bit MS وتثبيت Access 64bit MS (AccessDatabaseengine_x64.exe). أخيرًا ، عملت مع كل من السرعة العالية واتصال MDB.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top