首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式验证mysql语句

使用正则表达式验证mysql语句
EN

Stack Overflow用户
提问于 2015-07-07 17:39:51
回答 4查看 1.8K关注 0票数 5

我正在用java写一个程序。在对话框中,用户需要输入MySQL SELECT语句。程序必须验证语句,然后才能继续运行。我的问题是:有没有一种方法以及如何用正则表达式验证语句。我需要“只”正则表达式模式。谢谢。

EN

回答 4

Stack Overflow用户

发布于 2015-07-07 17:44:31

好吧,也许对于扩展的正则表达式,但是对于“正则表达式”的原始含义,代表"Regular Language“-不是。

每条SELECT语句是:

代码语言:javascript
复制
SELECT x FROM y WHERE z

但是,由于y本身可以是一个SELECT语句,这至少与平衡括号的语言一样难,后者是不规则的。

票数 4
EN

Stack Overflow用户

发布于 2015-07-07 17:54:30

如果您的目标是只允许SELECT语句,那么只将此操作授予打开数据库连接的数据库用户。在此之后,只需处理SQLException

您真的不想手工编写和维护验证代码,因为要记住的事情太多了。例如,如果您的JDBC连接使用的是allowMultiQueries=true参数,那么可以在SELECT * FROM table; DROP TABLE table;这样的字符串中执行多个语句。

票数 3
EN

Stack Overflow用户

发布于 2015-07-07 17:45:45

如果是SELECT语句,则应以SELECT开头。下面的代码是匹配任何以SELECT开头的内容。

代码语言:javascript
复制
String sa = "THIS SELECT * from table;";
System.out.println(sa.matches("(?i)^select .*")); //FALSE as the input string is not valid select statement
sa = "SELECT * from table;";
System.out.println(sa.matches("(?i)^select .*")); //TRUE as the input string is  valid select statement
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31265020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档