我正在尝试使用 C# 对 Access 2007 数据库运行以下查询:
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT * FROM MSysQueries";
OleDbDataReader reader = command.ExecuteReader();
我收到错误:
无法读取记录;没有“MSysQueries”的读取权限。
是否有可能做到这一点?如果是这样怎么办?我的印象是可以做到这一点,但我不完全确定。
正如类似问题中提到的here https://stackoverflow.com/q/19971082/2144390,绕过
无法读取记录;没有“MSysQueries”的读取权限。
错误,您需要使用以下命令将 SELECT 权限授予默认用户“Admin”
GRANT SELECT ON MSysQueries TO Admin
您可以从 .NET OleDbConnection 执行该 SQL 语句,但为此,您需要在连接字符串中指定默认工作组信息文件 (System.mdw) 的位置,如下所示:
myConnectionString =
@"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data Source=C:\Users\Public\Database1.accdb;" +
@"Jet OLEDB:System database=C:\Users\Gord\AppData\Roaming\Microsoft\Access\System.mdw;";
可以通过读取值从 Windows 注册表中检索 .mdw 文件的路径
Key:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Access Connectivity Engine\Engines
Value:
SystemDB
(价值14.0
上述键中的值适用于 Access 2010。其他版本的 Access 将具有不同的值。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)