java 验证字符串是不是为sql语句 并且是不是包含 select 关键字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 验证字符串是不是为sql语句 并且是不是包含 select 关键字相关的知识,希望对你有一定的参考价值。
java验证字符串是否为sql语句,是否包含select关键字,主要使用的是正则表达式来进行验证,如下:
import java.util.*;import java.text.*;
class sqltest
public static void main(String[] args)
String span="select aaaa.id name ,hello ,type t,h from datas aaaa,city b where a.id=b.id and c like \'e%\' and name is null ";
span=span.toUpperCase();//测试用sql语句
System.out.println(span);
String column="(\\\\w+\\\\s*(\\\\w+\\\\s*)0,1)";//一列的正则表达式 匹配如 product p
String columns=column+"(,\\\\s*"+column+")*"; //多列正则表达式 匹配如 product p,category c,warehouse w
String ownerenable="((\\\\w+\\\\.)0,1\\\\w+\\\\s*(\\\\w+\\\\s*)0,1)";//一列的正则表达式 匹配如 a.product p
String ownerenables=ownerenable+"(,\\\\s*"+ownerenable+")*";//多列正则表达式 匹配如 a.product p,a.category c,b.warehouse w
String from="FROM\\\\s+"+columns;
String condition="(\\\\w+\\\\.)0,1\\\\w+\\\\s*(=|LIKE|IS)\\\\s*\'?(\\\\w+\\\\.)0,1[\\\\w%]+\'?";//条件的正则表达式 匹配如 a=b 或 a is b..
String conditions=condition+"(\\\\s+(AND|OR)\\\\s*"+condition+"\\\\s*)*";//多个条件 匹配如 a=b and c like \'r%\' or d is null
String where="(WHERE\\\\s+"+conditions+")0,1";
String pattern="SELECT\\\\s+(\\\\*|"+ownerenables+"\\\\s+"+from+")\\\\s+"+where+"\\\\s*"; //匹配最终sql的正则表达式
System.out.println(pattern);//输出正则表达式
System.out.println(span.matches(pattern));//是否比配
参考技术A 查找select 关建字还好说。可以用正则找一下。
是否为SQL语句就不好说了。 我觉得最好的办法,就是连接上数据库执行一下,没有异常 就是,有异常,要么是SQL不正确,要么就是根本不是SQL。
如果自己写一个解析程序,不是很保险。
-----------------------------------------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestT
public static void main(String[] args)
String str = " selEct xxx from dual;";
Matcher m = Pattern.compile("[selectSELECT]6").matcher(str);
while (m.find())
if (!"".equals(m.group()))
System.out.println(m.group());
本回答被提问者采纳 参考技术B 要验证字符串可以用正则表达式么
要么网页上的script
select要从数据库读取数据才用追问
想请教一下用javaScript 或 jquery 或 正则表达式 该怎么写?
追答javaScript是表单验证 写好函数 通过on事件调用
正则表达式自己去看
无非就是构建一个函数
取得要验证的值
通过正则表达式判断
然后返回值
这些都晓得,问题是正则表达式写不好!
SQL中怎么设置字段为10位数字。
现在有一个字段是10位数字,并且它与其它表的字段有主外键关系,请问它是什么类型的。
这个字段的类型与它是不是与其它表字段有主外键关系无关的,方法一:楼主可以通过可视化工具来查看,例如pl/sql
方法二:楼主也可以通过jdbc来实现,ResultSetMetaData这个类里面提供了方法getColumnTypeName 来获得类型名称。
方法三:通过sql语句来实现
select T.DATA_TYPE 字段类型,T.Data_Length 字段长度 from user_Tab_Cols T
WHERE T.TABLE_NAME=UPPER('tb_bis_menu') 参考技术A bigint本回答被提问者采纳
以上是关于java 验证字符串是不是为sql语句 并且是不是包含 select 关键字的主要内容,如果未能解决你的问题,请参考以下文章
我想验证一条 SQL 语句,然后返回它是不是有效? [复制]
SQL Server2008打开时遇到的问题:“请验证实例名称是不是正确并且SQL Server已配置为允许远程连接”。