Подключить базу данных SQL Server Compact 3.5 к MS Access 2003 с помощью ADO?

Можно ли записать соединение и открыть базу данных SQL Compact 3.5 из MS Access 2003? Я хочу иметь возможность использовать MS Access 2003 для управления данными в базе данных SQL Compact 3.5. Если это возможно, то какие операторы будут использоваться для открытия базы данных?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
2 766
2

Ответы 2

Хотя я не пробовал это специально с SQL Compact, подключение к серверу должно быть стандартным:

  1. Убедитесь, что файл ADODB (msado21.tlb) правильно указан в доступных инструментах.
  2. Запишите строку подключения примерно так:

    MyConnectionString = "Provider = SQLOLEDB.1; Integrated Security = SSPI; Persist Security Info = False; Initial Catalog = YourDatabaseName; Data Source = YourSQLServerInstanceName"

    Эта строка написана для контекста «интегрированной безопасности». Если вы хотите изменить его для контекста безопасности SQL, проверьте здесь, чтобы обновить строку. В идеале эту строку следует объявить в вашем коде как общедоступную переменную.

Как только это будет сделано, вы можете открыть набор записей ADODB и начать манипулировать им:

public sub connectionTest
Dim activeConnection as ADODB.connection, _
    activeRecordset as ADODB.recordset

Set activeConnection = New ADODB.connection
activeConnection.connectionString = myCOnnectionString
activeConnection.open

set activeRecordset = New ADODB.recordset
'this will open a read-only recordset'
activeRecordset.open _
    "SELECT * FROM myTableName", _
    activeConnection, _
    adOpenStatic, _
    adLockReadOnly

if activeRecordset.EOF and activeRecordset.BOF then
    debug.print "No records in this table"
else
    activeRecordset.moveFirst
    do while not activeRecordset.EOF
        debug.print activerecordset.fields("myFieldName").value
        activeRecordset.moveNext
    loop
endif

activeRecordset.close
set activeRecordset = nothing
activeConnection.close
set activeConnection = nothing

end sub

Это всего лишь идея, и я не могу подтвердить, что она будет работать, но, учитывая, что в SQL Compact отсутствует драйвер ODBC и у вас не может быть связанных таблиц, возможно, вы можете использовать строку подключения OLEDB для SQL Compact в качестве строки подключения источника. сохраненного QueryDef в Access. Если вы можете заставить это работать, вы можете создать сохраненный QueryDef для каждой таблицы, а затем использовать их, как если бы запросы были связанными таблицами.

Я не могу протестировать его на своей машине, потому что единственный поставщик OLEDB, который я установил, - это Jet, а Access, похоже, это не нравится.

Но, возможно, стоит попробовать. Возможно, это не сработает, так как я нигде не могу найти, чтобы кто-нибудь делал это в Access. Но я действительно не понимаю, почему это не должно работать.

Опять же, я мог просто ошибаться.

Другие вопросы по теме