是否可以在 MS Access 2003 中编写连接并打开 SQL Compact 3.5 数据库?我希望能够使用 MS Access 2003 来操作 SQL Compact 3.5 数据库中的数据。如果可能,那么将使用哪些语句来打开数据库?
2 回答
这只是一个想法,我无法确认它是否会起作用,但鉴于 SQL Compact 缺少 ODBC 驱动程序并且您不能拥有链接表,也许您可以使用 SQL Compact 的 OLEDB 连接字符串作为源连接字符串在 Access 中保存的 QueryDef。如果你能让它工作,你可以为每个表创建一个保存的 QueryDef,然后像查询是链接表一样使用它们。
我无法在我的机器上测试它,因为我安装的唯一 OLEDB 提供程序是 Jet,而 Access 似乎不喜欢那样。
但这可能值得一试。可能它不会起作用,因为我在 Access 中找不到任何人这样做过的地方。但我真的不明白为什么它不应该工作。
再说一次,我可能完全是错的,不过。
虽然我没有专门尝试使用 SQL Compact,但连接到服务器应该是标准的:
- 检查您的可用工具中是否正确引用了 ADODB 文件 (msado21.tlb)
写下您的连接字符串,如下所示:
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