《java提取数据库表字段信息的工具类》由会员分享,可在线阅读,更多相关《java提取数据库表字段信息的工具类(143页珍藏版)》请在金锄头文库上搜索。
1、分享一个分享一个 javajava 提取数据提取数据库库表字段信息的工具表字段信息的工具类类 在 java 开发过程中,如果没有使用 hibernate 这样的框架,要想快速提取一 个数据表的所有字段(尤其是对于一个比较多字段的表)这是个痛苦的事情。在网上找到一些关于提取数据表字段的介绍文章,然后结合自己的需求写 了以下一个工具类。/* 带有 Java 类型定义的* param tbn* param splitChar* return* throws SQLException*/public String getColumnWithJavaClass(String tbn,String spl
2、itChar) throws SQLExceptionIterator its = getTableColumns(tbn).entrySet().iterator();StringBuffer sb=new StringBuffer();while(its.hasNext()Entry it = its.next();sb.append(“public “);sb.append(it.getValue();sb.append(“ “+it.getKey()+“;“);if(its.hasNext() sb.append(splitChar);return sb.toString();/* 只
3、有字段名信息* param tbn* param splitChar* return* throws SQLException*/public String getColumnNames(String tbn,String splitChar) throws SQLExceptionIterator its = getTableColumns(tbn).entrySet().iterator();StringBuffer sb=new StringBuffer();while(its.hasNext()sb.append(its.next().getKey();if(its.hasNext()
4、 sb.append(splitChar);return sb.toString();/* * param tbn* return* throws SQLException*/public LinkedHashMap getTableColumns(String tbn) throws SQLExceptionLinkedHashMap cous = new LinkedHashMap();ResultSetMetaData mds = con.createStatement().executeQuery(“select * from “+tbn+“ limit 0,1“).getMetaDa
5、ta();int t = mds.getColumnCount();for(int i=0;i cous.put(mds.getColumnName(i+1), mds.getColumnClassName(i+1);return cous;public java.lang.Long id; public java.lang.String hash; public java.lang.Long size; public java.lang.Long parent; public java.lang.String txtname; public java.lang.String url; pub
6、lic java.lang.Integer sortid;附加学习:HashMap 是按照 HashCode 排序,莫名其妙的顺序。 TreeMap 是按照自身的顺序排序,比如数字的话,按照数字升序,ascII 等。 LinkedHashMap 是按照先进先出的顺序。本文关键词:java 数据库 工具类 mapimport java.util.ArrayList; import java.util.regex.*; public class Test1 public static void main(String args) Pattern p =Ppile(“w+(?=)|w+(?=.)“)
7、;/list 用于装匹配的 b c e 装完后用 list.toArray 转换为数组就行了ArrayList list = new ArrayList();String num=“select * from a where owner=b and password=c; select * from e.f;“;Matcher m = p.matcher(num);while(m.find()System.out.println(m.group();list.add(m.group(); 目前更新的:/import java.util.ArrayList;/import java.util.L
8、ist;import java.util.regex.*;import java.io.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class logxi private static final Logger logger = LoggerFactory.getLogger(logxi.class);public static void main(String args)String line;String filePath = “D:/log/log.log“; / List list = new Arra
9、yList();try FileInputStream is = new FileInputStream(filePath);InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);try while (line = br.readLine() != null) / if (line.equals(“)/ continue;/ else/ list.add(line);Pattern p1 = Ppile(“/d1,3/./d1,3/./d1,3/./d1,3“)
10、; /IP modelPattern p2 = Ppile(“d4-01-9|11-2-01-9|1-2d|30-1 0-20-4:0-6d:0-6d$“); /Time modelPattern p3 = Ppile(“0-9“) ; /PID modelMatcher m1 = p1.matcher(line);Matcher m2 = p2.matcher(line);Matcher m3 = p3.matcher(line);if (m1.find()logger.info(“IP model is find.The number of matching group of IP mod
11、el is:“+ m1.groupCount();for ( int i=1; i.*|/ 匹配首尾空格的正则表达式:(s*)|(s*$) 应用:javascript 中没有像 vbscript 那样的 trim 函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim = function()return this.replace(/(s*)|(s*$)/g, “);利用正则表达式分解和转换 IP 地址: 下面是利用正则表达式匹配 IP 地址,并将 IP 地址转换成对应数值的 Javascript 程序: function IP2V(ip)re=/(d ).(
12、d ).(d ).(d )/g /匹配 IP 地址的 正则表达式if(re.test(ip)return RegExp.$1*Math.pow(255,3) RegExp.$2*Math.pow(255,2) RegExp.$3*255 RegExp.$4*1elsethrow new Error(“Not a valid IP address!“)不过上面的程序如果不用正则表达式,而直接用 split 函数来分解可能更简单,程序如下: var ip=“10.100.20.168“ip=ip.split(“.“)alert(“IP 值是:“ (ip0*255*255*255 ip1*255*2
13、55 ip2*255 ip3*1)匹配 Email 地址的正则表达式:w (- .w )*w (-.w )*.w (-.w )* 匹配网址 URL 的正则表达式:http:/(w- .) w- (/w- ./?%indexOf();indexOf()indexOf()返回字符串内第一次出返回字符串内第一次出现现 子字符串子字符串 的位置。的位置。用法:strObj.indexOf(subString, startIndex) /strObj,必选,被查找的字符串。subString,必选,要查找的子字符串。startIndex,可选,查找的起始位置。为空时默认从 0 开始查找。indexOf
14、方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。testvarstr =“Hello Word!“varstr1=“ Hello Word!“document.write(str.indexOf(“Hello“) + “);document.write(str1.indexOf(“Hello“) + “);document.write(str.indexOf(“word“) + “);document.write(str.indexOf(“Word“) + “);indexOf 就是最基本的数据验证了,通过判断返回值,我们可以找到某一个字符
15、串里是不是有某一个子字符串了。但是为了查找或者验证字符串是否符合某一复复杂杂的特定的特定规则规则,我们会用到正则表达式。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。比如我要验证在是不是邮箱格式,是不是手机号码等等。在正则中,我们用一系列的元字符来表示特定的含义:比如: 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性, 也匹配 n 或 r 之后的位置。* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z“ 以及 “zoo“。 * 等价于0,。. 匹配除 “n“ 之外的任何单个字符。要匹配包括 n 在内的任何字符,请使用象 .n 的模式。d 匹配一个数字字符。等价于 0-9。D 匹配一个非数字字符。等价于 0-9。b 匹配一个单词边界,也就是指单词和空格间的位置。例如, erb 可以匹配“never“ 中的 er,但不能匹配 “verb“ 中的 er。B 匹配非单词边界。erB 能匹配 “verb“ 中的 er,但不能匹配 “neve