0

我们正在将报告框架构建到我们的应用程序中,这需要使用查询构建器。最终,我们希望高级用户能够构建用于填充报表数据集的 SELECT 查询。

数据集是使用DataAdapter(MSSQL 或 SQLite)构建的。有没有我们可以使用的工具来确保最终用户构建的查询只能是 SELECT 语句?

编辑:

如上所述,我们将 SQLite 定位为我们支持的后端之一 在此平台上无法设置数据库权限。

4

4 回答 4

3

为数据库设置正确的权限。这是最好的解决方案。

编辑:

对于 SQLLite,您可以在文件系统中设置文件的只读权限。

于 2013-07-26T10:03:12.937 回答
2

仅授予执行 SQL 的用户db_datareader权限,以确保他们除了读取数据之外不能做任何事情。

这个问题提供了有关如何做到这一点的更多信息: How to give a user only select permission on a database

于 2013-07-26T10:03:29.060 回答
1

如果查询构建器是在内部完成的,并且如果您的查询构建器在字符串中返回 SQL 语句,那么您可以通过查找更新语句 keyworks 或使用正则表达式来解析它,如果您想让用户免于创建更新的麻烦查询然后意识到他们无法运行它,那么您应该考虑在他们创建查询时连续进行此检查。或者,您可以使用第三方查询构建器,例如:http : //www.activequerybuilder.com/,不幸的是,我相信它不支持除 Select 语句之外的任何其他内容,但它可能值得一试。

于 2013-07-26T16:53:03.500 回答
0

我认为您所要做的就是包装 QueryBuilder 并仅公开允许的操作。我不好做相反的想法,比如让用户构造一个查询,最后你告诉他这是不允许的。

于 2013-07-26T10:08:00.847 回答