您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > java连接数据库增删改查工具类
java连接数据库增、删、改、查工具类这篇文章主要介绍了java连接数据库增、删、改、查工具类,需要的朋友可以参考下java连接数据库增、删、改、查工具类数据库操作工具类,因为各厂家数据库的分页条件不同,目前支持Mysql、Oracle、Postgresql的分页查询在Postgresql环境测试过了,其他数据库未测试。sql语句需要使用预编译形式的复制代码代码如下:packagedb;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;importjava.lang.reflect.Field;importjava.sql.Connection;importjava.sql.Date;importjava.sql.Driver;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.sql.Time;importjava.sql.Timestamp;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.naming.NamingException;importjavax.sql.DataSource;/***数据库查询工具类*使用预编译的sql**@authorXueLiang**/publicclassDBUtil{privatestaticStringdriver;privatestaticDataSourceds=null;privatestaticStringurl=jdbc:postgresql://192.168.56.101/db;privatestaticStringuser=test;privatestaticStringpassword=12345678;static{try{Class.forName(org.postgresql.Driver);//ds=(DataSource)SpringContextUtil.getBean(dataSource);}catch(Exceptione){e.printStackTrace();}}/***建立连接**@returnconConnection*@throwsException*/privatestaticConnectiongetConnection()throwsException{Connectionconn=DriverManager.getConnection(url,user,password);//Connectionconn=ds.getConnection();Driverd=DriverManager.getDriver(conn.getMetaData().getURL());driver=d.getClass().getName();returnconn;}/***关闭连接**@paramconn*@paramstmt*@parampreStmt*@paramrs*@throwsSQLException*/privatestaticvoidreplease(Connectionconn,Statementstmt,ResultSetrs)throwsSQLException{if(rs!=null){rs.close();rs=null;}if(stmt!=null){stmt.close();stmt=null;}if(conn!=null){conn.close();conn=null;}}/***利用正则表达式,获得SELECTSQL中的列名**@paramsql*@return*/privatestaticListStringgetColumnsFromSelect(Stringsql){ListStringcolNames=newArrayListString();//取出sql中列名部分Patternp=Pattern.compile((?i)select\\s(.*?)\\sfrom.*);Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(,);}if(tempA==null){returnnull;}Stringp1=(\\w+);Stringp2=(?:\\w+\\s(\\w+));Stringp3=(?:\\w+\\sas\\s(\\w+));Stringp4=(?:\\w+\\.(\\w+));Stringp5=(?:\\w+\\.\\w+\\s(\\w+));Stringp6=(?:\\w+\\.\\w+\\sas\\s(\\w+));Stringp7=(?:.+\\s(\\w+));Stringp8=(?:.+\\sas\\s(\\w+));p=Pattern.compile((?:+p1+||+p2+||+p3+||+p4+||+p5+||+p6+||+p7+||+p8+));for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i=m.groupCount();i++){if(m.group(i)==null||.equals(m.group(i))){continue;}colNames.add(m.group(i));}}returncolNames;}/***利用正则表达式,获得INSERTSQL中的列名**@paramsql*@return*/privatestaticListStringgetColumnsFromInsert(Stringsql){ListStringcolNames=newArrayListString();//取出sql中列名部分Patternp=Pattern.compile((?i)insert\\s+into.*\\((.*)\\)\\s+values.*);Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(,);}if(tempA==null){returnnull;}Stringp1=(\\w+);Stringp2=(?:\\w+\\s(\\w+));Stringp3=(?:\\w+\\sas\\s(\\w+));Stringp4=(?:\\w+\\.(\\w+));Stringp5=(?:\\w+\\.\\w+\\s(\\w+));Stringp6=(?:\\w+\\.\\w+\\sas\\s(\\w+));Stringp7=(?:.+\\s(\\w+));Stringp8=(?:.+\\sas\\s(\\w+));p=Pattern.compile((?:+p1+||+p2+||+p3+||+p4+||+p5+||+p6+||+p7+||+p8+));for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i=m.groupCount();i++){if(m.group(i)==null||.equals(m.group(i))){continue;}colNames.add(m.group(i));}}returncolNames;}/***利用正则表达式,获得UPDATESQL中的列名,包括WHERE字句的**@paramsql*@return*/privatestaticListStringgetColumnsFromUpdate(Stringsql){ListStringcolNames=newArrayListString();//取出sql中列名部分Patternp=Pattern.compile((?i)update(?:.*)set(.*)(?:from.*)*where(.*(and)*.*));Matcherm=p.matcher(sql.trim());String[]tempA=null;if(m.matches()){tempA=m.group(1).split(,);if(m.groupCount()1){String[]tmp=m.group(2).split(and);String[]fina=newString[tempA.length+tmp.length];System.arraycopy(tempA,0,fina,0,tempA.length);System.arraycopy(tmp,0,fina,tempA.length,tmp.length);tempA=fina;}}if(tempA==null){returnnull;}Stringp1=(?i)(\\w+)(?:\\s*\\=\\s*.*);Stringp2=(?i)(?:\\w+\\.)(\\w+)(?:\\s*\\=\\s*.*);p=Pattern.compile(p1+||+p2);for(Stringtemp:tempA){m=p.matcher(temp.trim());if(!m.matches()){continue;}for(inti=1;i=m.groupCount();i++){if(m.group(i)==null||.equals(m.group(i))){continue;}colNames.add(m.group(i));}}returncolNames;}/***为sql添加统计代码**@paramsql*@return*/privatestaticStringaddCountSQL(Stringsql){StringBuffersb=newStringBuffer();sb.append(selectcount(*)asdataCountfrom();sb.append(sql);sb.append()asa);returnsb.toString();}/***为sql添加分页代码**@paramsql*@paramstart*@paramlimit*@return*/privatestaticStringaddPagingSQL(Stringsql,intstart,intlimit){StringBuffersb=newStringBuffer();if(com.microsoft.jdbc.sqlserver.SQLServerDviver.equals(driver)){//SQLServer0.72000}elseif(com.microsoft.sqlserver.jdbc.SQLServerDriver.equals(driver)){//SQLServer20052008}elseif(com.mysql.jdbc.Driver.equals(driver)){//MySQLsb.append(sql);sb.append(LIMIT);sb.append(start);sb.append(,);
本文标题:java连接数据库增删改查工具类
链接地址:https://www.777doc.com/doc-2881608 .html