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