我有一个sql查询的文本。此文本只能包含select语句(它必须始终以“select”开头)。
文本不应以任何方式改变数据库。我如何验证它(以确保它不会影响我的数据库并仅从中获取数据)?
我正在使用Java和mySQL。
谢谢。
答案 0 :(得分:3)
您应该考虑仅创建新用户和GRANT
SELECT
权限。然后,您不必担心解析SQL查询并检查它们是否可以更改数据库。
另一方面,如果查询以select
开头,我认为它不能改变您的数据库,因为选择不能包含嵌套更新或删除。
答案 1 :(得分:-1)
您可以使用正则表达式执行此操作。
String yourQuery = "SELECT";
if(Pattern.compile("SELECT .*").matcher(yourQuery).find())
{
// do stuff
}