gpt4 book ai didi

c# - 在 Access 中针对(隐藏的)系统表运行 C# 查询?

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:12 29 4
gpt4 key购买 nike

我尝试在 C# 中针对 Access 2007 数据库运行以下查询:

OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT * FROM MSysQueries";
OleDbDataReader reader = command.ExecuteReader();

我得到了错误:

Record(s) cannot be read; no read permission on 'MSysQueries'.

这有可能吗?如果是这样怎么办?我的印象是可以这样做,但我不完全确定。

最佳答案

如类似问题中所述here , 绕过

Record(s) cannot be read; no read permission on '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会有不同的值。)

关于c# - 在 Access 中针对(隐藏的)系统表运行 C# 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625427/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com