如何以只读方式打开SQL Compact数据库

7 投票
1 回答
4713 浏览
提问于 2025-04-16 04:34

我有一个 SQL Compact v3.1 的数据库,想要快速读取它。我是在 Python 中进行操作,所以不能使用托管代码。

我发现如果我使用 adodbapi 打开这个数据库文件,它实际上会被修改。而且,当我在连接字符串中加上“文件模式=只读”时,出现了一个奇怪的错误。

这是我用来连接的代码:

import adodbapi
adodbapi.connect('Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0; Data Source="awesome.sdf"; File mode = Read Only;SSCE:Temp File Directory=c:\temp\\;')

然后我收到了这个错误信息:

OperationalError: (com_error(-2147352567, 'Exception occurred.', (0, u'Microsoft OLE DB Service Components', 
             u'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.', 
             None, 0, -2147217887), None), 
    u'Error opening connection: Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0; Data Source="Awesome.sdf";File mode = Read Only;SSCE:Temp File Directory="c:\\\temp\\";')

我添加了 SSCE,因为当我用 C# 写测试程序时需要它。下面的代码在执行简单的 SELECT 查询时工作得很好,并且不会修改文件。

conn = new SqlCeConnection("Data Source = awesome.spf; File mode = Read Only;SSCE:Temp File Directory=\"c:\\users\\evelio\\desktop\\\";");
conn.Open();

谢谢你的帮助,
Evelio

1 个回答

撰写回答