Подключить базу данных SQL Server Compact 3.5 к MS Access 2003 с помощью ADO? - PullRequest
4 голосов
/ 29 ноября 2008

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

Ответы [ 2 ]

2 голосов
/ 02 декабря 2008

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

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

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

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

1 голос
/ 01 декабря 2008

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

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

    MyConnectionString = "Поставщик = SQLOLEDB.1; Интегрированная безопасность = SSPI; Постоянная информация о безопасности = Ложь; Начальный каталог = YourDatabaseName; Источник данных = 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
...