X64 OS에서 C#을 사용하여 제트 데이터베이스/Excel 파일 쿼리 쿼리

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

  •  03-07-2019
  •  | 
  •  

문제

그래서 나는 그것을 배웠습니다 Microsoft.jet.oledb.4.0 Microsoft Access MDB 파일 및 Excel 스프레드 시트와 같은 데이터 소스를 쿼리하기위한 데이터 제공 업체는 Windows 64 비트 운영 체제에서 작동하지 않습니다.

X86 및 X64 환경 모두에서 호환성을 보장하기 위해 .NET 3.5 (C#) 애플리케이션에서 이러한 파일 유형에 대해 쿼리하는 데 사용해야하는 것은 무엇입니까? 나는 인터넷을 수색 했으며이 비 호환성을 처리하는 방법에 대한 정답을 찾을 수없는 것 같습니다.

또한 ODBC 제공 업체와 MSDASQL 제공 업체를 사용해 보았습니다. 운이없는 MSDASQL 제공 업체는 Microsoft.jet.oledb.4.0 공급자와 동일한 예외를 X64 환경에서 사용할 때 (내가 끔찍하게 잘못된 일을하지 않는 한) 내 Windows XP X86 환경에서 잘 작동하더라도 다른 두 공급 업체.

나는 사람들이 내가 사용해야한다고 말하는 것을 발견했다 %windir% system32 odbcad32.exe x64 시스템의 ODBC 연결을 위해서는이를 활용하는 방법에 대해 알고 있습니다.

x64 아래에 던진 예방 예제 :

**************** 예외 텍스트 ************** System.invalidoperationException : 'Microsoft.jet.oledb.4.0'공급자는 등록되지 않았습니다. 로컬 기계. at System.Data.oledb.oledbserviceswrapper.getDatasource (OLEDBCONNECTIONTRING SUCKS, DATASORCEWRAPPER 및 DATASRCWRAPPER) AT SYSTEM.DATA.OLEDB.OLEDBCONNECTIONINTERNAL..CTOR (OLEDBCONNECTIONTRING SURPHS, OLEDBCONNECTION)의 OPERMONNECTION (DOFERCONTECTE) PoolgroupProviderInfo, DBConnectionPool 풀, DBConnection oningobject)

도움이 되었습니까?

해결책

내가 최근 연구에서 본 모든 것은 당신이보고있는 것을 확인합니다. 단순히 64 비트 제트 드라이버가 없다는 것을 확인합니다. 또한 게시물을 찾았습니다 이것 64 비트 MSDASQL이 실제로 래퍼 일 뿐이므로 도움이되지 않을 것 같습니다 (Ricky Wen의 5 월 8 일자 마지막 게시물 참조). 유일한 옵션은 32 비트 프록시, 아마도 또 다른 32 비트 SQL 서버를 링크하는 것입니다. 제트 데이터를 SQL로 이동할 수있을 때까지 직접 수행 할 수 있습니다.

다른 팁

여기서 일어나는 일은 X64 어셈블리가 X86 COM 구성 요소를 호출하려고한다는 것입니다. X64 앱은 WOW6432Node Hive에 있기 때문에 기본 X64 레지스트리에서 COM 등록을 볼 수 없습니다.

가장 쉬운 해결 방법은 X86 대상 플랫폼을 사용하여 응용 프로그램을 구축하고 나중에 X64 컴퓨터에서 WOW에서 실행하도록하는 것입니다. 앱은 32 비트로 실행되며 필요한 32 비트 COM 객체를 볼 수 있습니다.

JetSQL 용 64 비트 ODBC 드라이버가 있습니다. 그것은 Microsoft Access 데이터베이스 엔진 2010 재분배 가능. 나는 OLEDB에 그것을 사용하지 않았지만 새로운 것을 만들기 위해 그것을 사용했습니다. PowerShell이있는 Microsoft Access 데이터베이스.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top