假设我有一个表,其中包含“名称”,“年龄”,“城市”,“国家”列。我想向用户展示数据库查询界面,也就是说,他们应该能够执行user postgres
run env # HOME=/var/lib/pgsql
env PGDATA=$HOME/data
run env # PGDATA=/data
我们要做的各种查询。
我能想到的唯一方法是在每一列中都有一行,其中每一行都是以下形式:
sql
活动中的示例查询为:
column name | operator | value
然后使用该信息,我可以让一个方法执行查询并返回结果。
对于这个简单的示例,它将起作用。但是还有更多有趣的事情可以问name | = | Bob
age | > | 25
,而这种方法在很多查询中都会失败。
对此我该怎么办?
答案 0 :(得分:2)
首先,您需要考虑要允许用户执行哪些操作。最常见的SQL查询是 SELECT , INSERT , UPDATE , DELETE 。获得要提供的操作列表后,您需要考虑用户在进行任何这些查询时可以选择的参数。例如,如果用户想获取(选择)某些数据,那么在您的情况下,他可以提供什么作为输入。其他查询也是如此。
因此,一旦获得了以上信息,就需要将其转换为查询。这可以通过创建一个实用程序或帮助程序类来完成,该类考虑用户查询以及参数并形成可以在数据库上执行的SQL查询。
例如,让我们进入StackOverflow作业页面(https://stackoverflow.com/jobs?med=site-ui&ref=jobs-tab)。在这里,您可以看到用户可以基于多个参数来获取数据,这些参数包括关键字,位置,远程等。考虑到此示例,您的实用程序将创建一个SELECT查询并传递用户选择的参数并生成以下形式的SQL查询
SELECT jobs WHERE is_remote=<user_param> AND tech=<user_param> AND compensation=<user_param>
这只是需要做的事情的概述。根据您的确切用例,可能会有一些更改。但这仅涵盖了您需要实现的目标。