Как получить доступ к SQL CE 3.5 из VB6 - PullRequest
1 голос
/ 07 апреля 2010

У нас есть приложение .NET 3.5 SP1, написанное на C #, которое хранит данные в базе данных SQL CE 3.5. Нам также необходимо получить доступ (только для чтения) к этим самым данным из устаревшего приложения VB6.

Я не знаю, возможно ли это вообще. Есть несколько подходов к этой проблеме, о которых я могу подумать.

1) Я читал о ADOCE Connections, но, похоже, это вариант только для встроенного Visual Basic

2) Я не могу заставить работать соединение, используя объекты ADODB.Connection, например

Dim MyConnObj As New ADODB.Connection
' Microsoft.SQLSERVER.CE.OLEDB.3.5
' Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
MyConnObj.ConnectionString = "Provider=SQLOLEDB;Data Source=c:\test.sdf"
MyConnObj.Open

Может быть, это просто плохой выбор провайдеров? Я также пытался провайдеры, которые появляются в виде комментариев выше и различных строк подключения, но безрезультатно. Оба провайдера не установлены на моем компьютере разработчика и не будут установлены на компьютере моего клиента.

3) Может быть, есть способ использовать более общий подход, такой как ODBC? Но я верю, что это приведет к работе по настройке / развертыванию, верно?

Кто-нибудь имеет опыт работы с этим сценарием? Как видите, я действительно ищу хорошие отправные точки. Я также принимаю ответы типа «Это просто офигительно, и вы тоже», если они приходят с некоторыми указаниями; -)

Ответы [ 3 ]

5 голосов
/ 07 апреля 2010

Provider = Microsoft.SQLSERVER.CE.OLEDB.3.5; Источник данных = c: \ test.sdf;

Убедитесь, что у вас есть поставщик услуг. Запустите Regedit.exe, откройте узел HKEY_CLASSES_ROOT, прокрутите вниз и убедитесь, что вы видите ключ Microsoft.SQLSERVER.CE.OLEDB.3.5. Если его там нет, у вас есть для его установки. Ссылка для скачивания .

1 голос
/ 07 апреля 2010

Согласно connectionstrings.com, вы должны иметь возможность использовать

Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=myPath\myData.sdf;

Однако поставщик OLEDB для SQL Server CE не обеспечивает всех функций.

0 голосов
/ 07 апреля 2010

Вы можете создать COM-видимый компонент C # для извлечения данных для VB6. Это позволяет избежать использования потенциально провокационного поставщика OLEDB для SQL Server CE.

Он имеет еще одно преимущество в том, что добавляет слой изоляции между VB6 и структурой базы данных.

...