الاستعلام عن قواعد بيانات Jet/ملفات Excel مع C# تحت إلى x64 من نظام التشغيل

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

  •  03-07-2019
  •  | 
  •  

سؤال

لذا تعلمت أن مايكروسوفت.طائرة.OLEDB.4.0 موفر البيانات من أجل الاستعلام عن مصادر البيانات مثل Microsoft Access MDB ملفات جداول البيانات إكسل لا يعمل تحت ويندوز 64 بت أنظمة التشغيل.

ما أنا عليه الآن من المفترض أن استخدام الاستعلام ضد أنواع الملفات هذه في .NET framework 3.5 (C#) التطبيقات لضمان التوافق في كل x86 و x64 والبيئات ؟ لقد بحثت في الإنترنت وأنا لا يمكن أن يبدو للعثور على إجابة مباشرة على كيفية التعامل مع هذا التعارض.

لقد حاولت أيضا باستخدام موفر ODBC و MSDASQL مزود مع أي حظ كما يبدو أنهم يلقون نفس الاستثناءات مثل مايكروسوفت.طائرة.OLEDB.4.0 مزود هل عند استخدامها في بيئة x64 (ما لم أفعل شيئا صارخ الخطأ مع هذه وغيرها من اثنين من مقدمي الخدمات على الرغم من أنها تعمل بشكل جيد تحت في ويندوز XP x86 والبيئة).

لقد وجدت الناس يقولون أنني بحاجة إلى استخدام %WINDIR%\System32\odbcad32.exe لـ ODBC الاتصال في أنظمة x64, ولكن لدي فكرة عن كيفية الاستفادة من هذا.

مثال Exeption القيت تحت x64:

************** استثناء النص ************** النظام.InvalidOperationException:إن 'Microsoft.طائرة.OLEDB.4.0' موفر غير مسجل على الجهاز المحلي.في النظام.البيانات.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) في النظام.البيانات.OleDb.OleDbConnectionInternal..المنشئ(OleDbConnectionString constr, OleDbConnection اتصال) في النظام.البيانات.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions الخيارات كائن poolGroupProviderInfo, DbConnectionPool بركة ، دبكونيكشن owningObject)

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

المحلول

كل ما شاهدته في بلدي الأبحاث الحديثة تؤكد ما كنت ترى - هذا ببساطة ليس هناك 64 بت طائرة السائق.أيضا, لقد وجدت وظيفة على هذا موضوع ويبدو أن ذلك يؤكد أن 64 بت MSDASQL لن يساعد كما هو حقا مجرد المجمع (انظر آخر مشاركة بتاريخ 8 مايو من ريكي ون).الخيار الوحيد هو ربط من خلال 32 بت الوكيل, ربما آخر 32 بت من SQL server.قد ينتهي به هذا نفسي حتى أستطيع نقل البيانات Jet SQL.

نصائح أخرى

ما يحدث هنا هو أن x64 الجمعية تحاول الاتصال x86 مكون COM.X64 التطبيق لن ترى COM التسجيلات في الابتدائي x64 التسجيل,منذ أنهم في wow6432node الخلية.

أسهل حل هو بناء التطبيق مع x86 الهدف منصة واتركها تعمل على نجاح باهر في وقت لاحق إلى x64 آلة.التطبيق سيتم تشغيل 32 بت و تكون قادرا على رؤية 32 بت كائنات COM التي يحتاجها.

هناك الآن 64 بت تشغيل ODBC لـ JetSQL.هو بيانات Microsoft Access محرك 2010 Redistributable.أنا لم تستخدم من أجل OLEDB, ولكن يجب استخدامه لجعل الجديد قواعد بيانات Microsoft Access مع PowerShell.

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