2012-12-10 51 views
20

Tôi có ứng dụng 32 bit .net 2.0 sử dụng Jet OLEDB 4.0.Tôi có thể tải xuống (và cài đặt) Microsoft.Jet.OLEDB.4.0 cho Windows 8, 64 bit ở đâu/như thế nào?

Nó chạy vây trên Windows 8 32 bit, nhưng không chạy trên 64 bit. trên 64 bit Tôi nhận được một lỗi:

'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)

Tôi biết rằng bạn không thể sử dụng cơ sở dữ liệu (trình điều khiển) với một chút EXE . Tuy nhiên tôi chưa đọc bất cứ điều gì về nó không hoạt động với bit exe .

gì tôi đã cố gắng:

  1. Installed the MS Access Database Engine 2010 32 bit (and restarted)
  2. đã xác minh rằng msjet40.dll là trong "C: \ Windows \ SysWOW64 \ msjet40.dll" thư mục và đăng ký nó với regsvr32.

Vì vậy, tôi nghĩ (hy vọng) nếu tôi có thể cài đặt hỗ trợ cơ sở dữ liệu, nó sẽ hoạt động.

Vấn đề là tôi không thể tìm thấy bất kỳ nơi nào để tải xuống.

+0

Không có sẵn. Thay đổi cài đặt đích Platform của dự án EXE thành x86 để phiên bản 32 bit hoạt động. –

+0

@Hans, ứng dụng .net của tôi đã được biên dịch dưới dạng ứng dụng 32 bit (xác nhận b/c nó chạy trên phiên bản 32 bit của Windows). Điều đó khác với nhắm mục tiêu x86? –

+0

Mục tiêu mặc định cho .NET 2 ứng dụng trên VS2005 và VS2008 là AnyCPU. Mà sẽ làm cho nó chạy như một quá trình 64-bit trên phiên bản 64-bit của Windows. Vì vậy, không giả sử bất cứ điều gì và kiểm tra thiết lập mục tiêu nền tảng của bạn, x86 là bắt buộc. –

Trả lời

19

Trên Windows hiện đại, trình điều khiển này không khả dụng theo mặc định nữa, nhưng bạn có thể tải xuống dưới dạng Microsoft Access Database Engine 2010 Redistributable trên trang web MS. Nếu ứng dụng của bạn là 32 bit, hãy chắc chắn tải xuống và cài đặt phiên bản 32 bit vì kiến ​​thức của tôi về biến thể 32 và 64 bit không thể cùng tồn tại.

Tùy thuộc vào cách ứng dụng của bạn định vị trình điều khiển db của nó, đó có thể là tất cả những gì cần thiết. Tuy nhiên, nếu bạn sử dụng một tệp UDL có thêm một bước nữa - bạn cần chỉnh sửa tệp đó. Thật không may, trên một máy 64bits thuật sĩ được sử dụng để chỉnh sửa các tập tin UDL là 64 bit theo mặc định, nó sẽ không thấy trình điều khiển JET và chỉ tát bất cứ trình điều khiển nó tìm thấy đầu tiên trong tập tin UDL. Có 2 cách để giải quyết vấn đề này:

  1. bắt đầu 32 bit UDL wizard như sau: C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\path\to\your.udl. Lưu ý rằng tôi có thể sử dụng kỹ thuật này trên Win7 64 Pro, nhưng nó không hoạt động trên Server 2008R2 (có thể là lỗi của tôi, chỉ cần đề cập)
  2. mở tệp UDL trong Notepad hoặc trình soạn thảo văn bản khác, cần nhiều hơn hoặc ít có định dạng này:

[oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\To\The\database.mdb;Persist Security Info=False

Điều đó sẽ cho phép ứng dụng của bạn để bắt đầu một cách chính xác.

+0

Tôi không có tệp .udl. Tôi thấy cách tạo tệp .udl trống. Tôi có tạo nó trong thư mục ứng dụng không?Tôi có cung cấp cho tôi .dll không? HOw hiện các ứng dụng hoặc máy bay phản lực OLEDB biết "nhìn" cho nó ở đó? –

+0

@ClayNichols không phải tất cả các ứng dụng đều sử dụng tệp UDL, nó chỉ là một lớp bổ sung cho phép linh hoạt hơn trong cấu hình của ứng dụng. Có thể ứng dụng của bạn không cần đến, đường dẫn đến tệp cơ sở dữ liệu có thể được lưu trữ bên trong ứng dụng hoặc được định cấu hình theo ứng dụng theo cách khác. Bạn đã cài đặt trình điều khiển tôi đã đề cập trong thời gian đó? Bởi vì, một khi bạn đã thực hiện rằng các lỗi nên hoặc là biến mất, hoặc thay đổi, ví dụ như để báo hiệu rằng nó không thể xác định vị trí các tập tin mdb. – fvu

+0

Có, tôi đã cài đặt trình điều khiển đó. Ồ, xin lỗi, vâng, tôi đã thử điều đó trước đó (quên ghi chú). Đã thử cả phiên bản 32 bit (và sau đó gỡ cài đặt nó) và sau đó là phiên bản 64 bit. Cùng một lỗi cả hai lần. Tôi cho rằng một ứng dụng 32 bit cần phiên bản 32 bit, phải không? –

1

Đảm bảo nhắm mục tiêu x86 trên dự án của bạn trong Visual Studio. Điều này sẽ khắc phục sự cố của bạn.

Các vấn đề liên quan