我正在创建一个简单的工具来管理我们产品的数据库用户,并使用基本的CRUD操作。该工具使用针对Firebird 2.5数据库的Firebird ADO v5.5.5.0连接在VS2013中构建。
有没有办法使用SQL枚举用户列表?
我需要显示用户列表,然后在该列表上执行CRUD操作。
运行
等命令 BigDecimal d = new BigDecimal("10");
if(d.compareTo(new BigDecimal("0"))>0)
System.out.println("true");
//this evaluates to true
this link here中显示的是不够的,因为它要求此表中存在用户权限。
任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
在Firebird 2.5或更早版本中,访问所有用户列表的唯一方法是通过服务API。 Firebird ADO.net提供程序有一个实用程序类:FirebirdSql.Data.Services.FbSecurity
:
var fbSecurity = new FbSecurity(ConnectionString);
var users = fbSecurity.DisplayUsers();
foreach (var user in users)
{
Console.WriteLine(user.UserName);
}
您还可以使用此类添加,删除或修改用户。
请注意,对于大多数用户而言,仅限该用户,只允许SYSDBA和角色为RDB $ ADMIN的用户查看所有用户。
请注意,Firebird 3弃用了用于用户管理的服务API,而从Firebird 3开始,您应该使用SQL用户管理语句。请参阅SQL Features for Managing Access。
Firebird 3还为允许当前用户管理的用户添加了virtual table SEC$USERS
。对于大多数用户而言,通常只有那个用户,只允许SYSDBA和角色为RDB $ ADMIN的用户才能看到所有用户。
请注意,Firebird 3可以有多个身份验证插件,这意味着用户名可以多次出现(即每个插件最多一次)。