我有一个文本框,用户可以在其中输入他的 SQL 查询。但是,我需要制作一个程序来验证查询,然后再在数据库中执行它。
例如:
假设用户输入
SELECT A1,
A2,
A3
FROM XYZ
所以现在,在执行查询之前,我需要检查表XYZ 中是否存在
与否。否则,应向用户显示一条错误消息。A1
、A2
和A3
我想不出继续下去的方法。 那么任何人都可以通过示例代码片段给出关于如何进一步进行的基本想法吗?
最佳答案
我怀疑你是否应该这样做:
- 如果
XYZ
不是一个表,而是一个 View ,实体化 View ,存储返回游标的过程(取决于 RDBMS)? - 如果
XYZ
是一个表,但用户没有权限 (grant
) 读取它怎么办? - 如果用户没有权限,比方说,
A2
实地阅读怎么办?
还有其他情况需要考虑
- 查询可以重写(例如,在 Oracle 的情况下通过 FGA - 细粒度审计)
XYZ
可以是任何事物的同义词,例如dblink 到 Hadoop 上的远程表,而此 Hadoop 暂时停止服务
所以我建议执行查询不任何初步检查,但解析和解释如果有异常则抛出。
关于c# - 如何在使用 C# 执行 SQL 查询之前验证它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605191/