4

是否可以在 MS Access 2003 中编写连接并打开 SQL Compact 3.5 数据库?我希望能够使用 MS Access 2003 来操作 SQL Compact 3.5 数据库中的数据。如果可能,那么将使用哪些语句来打开数据库?

4

2 回答 2

2

这只是一个想法,我无法确认它是否会起作用,但鉴于 SQL Compact 缺少 ODBC 驱动程序并且您不能拥有链接表,也许您可​​以使用 SQL Compact 的 OLEDB 连接字符串作为源连接字符串在 Access 中保存的 QueryDef。如果你能让它工作,你可以为每个表创建一个保存的 QueryDef,然后像查询是链接表一样使用它们。

我无法在我的机器上测试它,因为我安装的唯一 OLEDB 提供程序是 Jet,而 Access 似乎不喜欢那样。

但这可能值得一试。可能它不会起作用,因为我在 Access 中找不到任何人这样做过的地方。但我真的不明白为什么它不应该工作。

再说一次,我可能完全是错的,不过。

于 2008-12-02T05:30:03.617 回答
1

虽然我没有专门尝试使用 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
于 2008-12-01T09:35:28.677 回答