我正在用java写一个程序。在对话框中,用户需要输入MySQL SELECT语句。程序必须验证语句,然后才能继续运行。我的问题是:有没有一种方法以及如何用正则表达式验证语句。我需要“只”正则表达式模式。谢谢。
发布于 2015-07-07 17:44:31
好吧,也许对于扩展的正则表达式,但是对于“正则表达式”的原始含义,代表"Regular Language“-不是。
每条SELECT语句是:
SELECT x FROM y WHERE z但是,由于y本身可以是一个SELECT语句,这至少与平衡括号的语言一样难,后者是不规则的。
发布于 2015-07-07 17:54:30
如果您的目标是只允许SELECT语句,那么只将此操作授予打开数据库连接的数据库用户。在此之后,只需处理SQLException。
您真的不想手工编写和维护验证代码,因为要记住的事情太多了。例如,如果您的JDBC连接使用的是allowMultiQueries=true参数,那么可以在SELECT * FROM table; DROP TABLE table;这样的字符串中执行多个语句。
发布于 2015-07-07 17:45:45
如果是SELECT语句,则应以SELECT开头。下面的代码是匹配任何以SELECT开头的内容。
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 statementhttps://stackoverflow.com/questions/31265020
复制相似问题