zoukankan      html  css  js  c++  java
  • java(2014版)连接数据库的工具类

    package util;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class JdbcUtil {
    	private static Connection conn;
    	private static PreparedStatement pstmt;
    	private static ResultSet rs;
    
    	private JdbcUtil() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    
    	// 连接数据库的操作
    	public static Connection getConn() {
    		if (conn == null) {
    			// 加载属性配置文件
    			// 创建属性对象
    			Properties prop = new Properties();
    			try {
    				// 加载指定名称的属性文件
    				prop.load(JdbcUtil.class.getClassLoader().getResourceAsStream(
    						"jdbc.properties"));
    				try {
    					// 根据文件的名称查找类文件
    					Class.forName(prop.getProperty("driver"));
    
    					// 创建连接对象
    					try {
    						conn = DriverManager.getConnection(
    								prop.getProperty("url"),
    								prop.getProperty("user"),
    								prop.getProperty("pass"));
    						System.out.println("连接数据库连接成功");
    
    					} catch (SQLException e) {
    						// TODO Auto-generated catch block
    						System.out.println("连接数据库失败");
    						e.printStackTrace();
    					}
    				} catch (ClassNotFoundException e) {
    					// TODO Auto-generated catch block
    					System.out
    							.println("没有" + prop.getProperty("driver") + "文件");
    					e.printStackTrace();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				System.out.println("属性文件加载出错");
    				e.printStackTrace();
    			}
    		}
    		return conn;
    	}
    
    	public static void release(ResultSet rs, PreparedStatement pstmt) {
    		// 释放结果集
    		if (rs != null) {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		// 释放准备语句
    		if (pstmt != null) {
    			try {
    				pstmt.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    
    	// 更新数据的操作增,删,改要用到的封装方法
    	public static boolean upDate(String sql, Object[] obj) {
    		boolean flag = false;
    
    		try {
    			// 准备语句的创建,带有sql命令的对象
    			pstmt = getConn().prepareStatement(sql);
    
    			for (int i = 1; i <= obj.length; i++) {
    				pstmt.setObject(i, obj[i - 1]);
    			}
    			int i = pstmt.executeUpdate();
    			if (i > 0) {
    				flag = true;
    			}
    
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			release(rs, pstmt);
    		}
    		return flag;
    	}
    
    	// 进行批量删除处理
    	public static boolean updateBatchDel(String sql, Object[] ids) {
    		boolean flag = false;
    		Connection conn = getConn();
    		PreparedStatement pstmt = null;
    		ResultSet rs = null;
    
    		try {
    			conn.setAutoCommit(false);
    			pstmt = conn.prepareStatement(sql);
    			for (int i = 0; i < ids.length; i++) {
    				pstmt.setObject(1, ids[i]);
    				System.out.println(sql + "---------------" + ids[i]);
    				pstmt.addBatch();
    			}
    			int[] num = pstmt.executeBatch(); // 批量执行
    			for (int i = 0; i < num.length; i++) {
    				if (num[i] == 0) {
    					try {
    						conn.rollback(); // 进行事务回滚
    						return flag;
    					} catch (SQLException ex) {
    						ex.printStackTrace();
    					}
    				}
    			}
    			conn.commit();// 提交事务
    			flag = true;
    		} catch (SQLException e) {
    
    			e.printStackTrace();
    		} finally {
    			release(rs, pstmt);
    		}
    		return flag;
    	}
    
    	// 根据传入的表的名称,和每页数据得到传入表的所有的页数
    		// tableName:::::操作的数据表名称
    		// pagesize::::::每页显示的信息条数
    	
    		public static Integer getCountPage(String tableName, Integer pagesize) {
    			Integer countPage = 0;
    			String sql = "select count(*) as c from " + tableName;
    			Connection conn = JdbcUtil.getConn();
    			PreparedStatement pstmt = null;
    			ResultSet rs = null;
    			conn = JdbcUtil.getConn();
    			try {
    				pstmt = conn.prepareStatement(sql);
    				rs = pstmt.executeQuery();
    				if (rs.next()) {
    					int countRecord = rs.getInt("c");
    					countPage = countRecord % pagesize == 0 ? countRecord
    							/ pagesize : countRecord / pagesize + 1;
    				}
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} finally {
    				JdbcUtil.release(rs, pstmt);
    			}
    			return countPage;
    		}
    	
    	
    }
    


  • 相关阅读:
    后台http请求参数为json 【转】
    【转】java获取当前年、月、日 、小时 、分钟、 秒、 毫秒
    java 增强for循环对于空集和null的判断
    jquery中对地址中的中文进行encodeURI编码
    System.arraycopy() 数组复制方法
    增强for循环的简单总结
    【转载】oracle中decode函数用法
    【转载】用jquery给select option 赋值
    【转载】execute、executeUpdate、executeQuery三者的区别(及返回值)
    小程序table正确姿势
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3503057.html
Copyright © 2011-2022 走看看