自写JdbcUtil工具类&在Tomcat下的service设置实现其简化

JDBC连接数据库
JDBC操作数据库代码模板

JdbcUtil.java

package JdbcUtil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcUtil {
	private static String CLASSNAME="com.mysql.jdbc.Driver";
	private static String URL="jdbc:mysql://localhost:3306/test";
	private static String USERNAME="root";
	private static String PASSWORD="root";
	private static Connection conn=null;
	private static PreparedStatement pstm=null;
	private static ResultSet rs=null;
	
	static {
		try {
			Class.forName(CLASSNAME);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public Connection getConnection() {
		try {
			conn=DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public ResultSet Query(String sql,Object...param) {
		getConnection();
		try {
			pstm=conn.prepareStatement(sql);
			if(param!=null) {
				for(int i=0;i<param.length;i++) {
					pstm.setObject(i+1, param[i]);
				}			
			}
			rs=pstm.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	public int Update(String sql,Object...param) {
		getConnection();
		try {
			pstm=conn.prepareStatement(sql);
			if(param!=null) {
				for(int i=0;i<=param.length;i++) {
					pstm.setObject(i+1, param[i]);
				}
				int i=pstm.executeUpdate();
				return i;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
	
	public void close() {
		try {
			if(conn!=null) {
				conn.close();
			}
			if(pstm!=null) {
				pstm.close();
			}
			if(rs!=null) {
				rs.close();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

Tomcat安装后的service下的Context.xml中Context标签内加入:

<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="20" maxWait="30000" username="root" password="root"
    driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" 
    removeAbandoned="true" removeAbandonedTimeout="30"  />

简化后的JdbcUtil,"//"为被简化的代码

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class JdbcUtil {
        //private static String CLASSNAME="com.mysql.jdbc.Driver";
        //private static String URL="jdbc:mysql://localhost:3306/test";
        //private static String USERNAME="root";
        //private static String PASSWORD="root";
        private Connection conn=null;
        private PreparedStatement pst=null;
        private ResultSet rs=null;
        /*static{
                try {
                        Class.forName(CLASSNAME);
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                }
        }*/
        
        public Connection getConnection(){
                try {
                        //conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
                        Context context = new InitialContext();
                        DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/test");
                        conn = ds.getConnection();
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return conn;
        }
        
        public ResultSet query(String sql,Object... param){
                getConnection();
                try {
                        pst = conn.prepareStatement(sql);
                        if(param!=null){
                                for(int i=0;i<param.length;i++){
                                        pst.setObject(i+1, param[i]);
                                }
                        }
                        rs = pst.executeQuery();
                        return rs;
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return null;
        }
        public int update(String sql,Object... param){
                getConnection();
                try {
                        pst = conn.prepareStatement(sql);
                        if(param!=null){
                                for(int i=0;i<param.length;i++){
                                        pst.setObject(i+1, param[i]);
                                }
                        }
                        int i = pst.executeUpdate();
                        return i;
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return 0;
        }
        
        public void close(){
                try{
                        if(conn!=null){
                                conn.close();
                        }
                        if(pst!=null){
                                pst.close();
                        }
                        if(rs!=null){
                                rs.close();
                        }
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值