Ben*_*Ben 1 c# sql ms-access ms-access-2007
我正在尝试对 C# 中的 Access 2007 数据库运行以下查询:
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT * FROM MSysQueries";
OleDbDataReader reader = command.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我得到错误:
无法读取记录;对“MSysQueries”没有读取权限。
是否有可能做到这一点?如果是这样怎么办?我的印象是可以做到这一点,但我不完全确定。
正如这里的类似问题中提到的,为了绕过
无法读取记录;对“MSysQueries”没有读取权限。
错误,您需要使用命令将 SELECT 权限授予默认用户“Admin”
GRANT SELECT ON MSysQueries TO Admin
Run Code Online (Sandbox Code Playgroud)
您可以从 .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;";
Run Code Online (Sandbox Code Playgroud)
可以通过读取值从 Windows 注册表中检索到 .mdw 文件的路径
Key:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Access Connectivity Engine\Engines
Value:
SystemDB
Run Code Online (Sandbox Code Playgroud)
(14.0以上键中的值适用于 Access 2010。其他版本的 Access 将具有不同的值。)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |