有没有办法使用C#更改Access数据库中的表的用户权限?我有一个问题是读取并插入到表中,该表拒绝了当前用户的读/插权限。当我手动更改权限工作,但我想通过C#以编程方式更改它。我已经尝试过这个SQL命令:
GRANT SELECT ON TABLE myTable TO Admin
但似乎我没有权利采取这一行动。这是它在Access中的样子。
编辑:
要调用@ rybo103方法,我已使用此代码,但我收到错误。
DAO.DBEngine engine = new DAO.DBEngine();
string path = @"C:\Database.mdb";
DAO.Database db = engine.OpenDatabase(path, false, false, "");
List<DAO.PermissionEnum> flags = new List<PermissionEnum>();
flags.Add(DAO.PermissionEnum.dbSecFullAccess);
AddPermissions(db, "ECR", "Admins", flags);
错误:
Cannot open the Microsoft Office Access database engine workgroup information file.
答案 0 :(得分:1)
在Access中,您需要使用DAO进行这些架构更改。
https://msdn.microsoft.com/en-us/library/office/ff835373.aspx
void AddPermissions(DAO.Database db, string tableName, string groupName, IList<DAO.PermissionEnum> addFlags)
{
var container = db.DaoDB.Containers["Tables"];
var document = container.Documents[tableName];
document.UserName = groupName;
int permissions = document.Permissions;
foreach (var flag in addFlags)
{
permissions = permissions | (int)flag;
}
document.Permissions = permissions;
}
答案 1 :(得分:1)
Jet OLEDB:System Database
属性添加到我的OleDb连接字符串中,它可以工作。即使没有GRANT
命令也可以。