zoukankan      html  css  js  c++  java
  • 对 JDBC 做一个轻量封装,待完善。。。

    对 JDBC 做一个轻量地封装,顺便复习,熟悉sql,io,util,lang.Reflect等包的使用,泛型的使用,待完善。。。

    package com.webproj.utils;

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.Properties;

    //用来获取数据库连接,PreparedStatement处理器对象,ResultSet结果集对象以及ResultSetMeataData对象等。
    public class DBTools {
    //因为是工具类,所以变量及方法全部静态
    private static Connection conn=null;//数据库连接
    private static PreparedStatement pStmt=null;//预处理器
    private static ResultSet rs=null;//数据集
    private static ResultSetMetaData metadata=null;//数据集中的元数据,包含列名,列的数据类型等等
    private static String driver=null,url=null,user=null,password=null;//驱动名,数据库url,数据库登陆用户名,密码
    private static String propertyFile="jdbc.properties";//存放driver,url,user,password的配置文件。

    //类一加载,则开始读取Property配置文件并加载驱动。
    static{
    InputStream in=DBTools.class.getClassLoader().getResourceAsStream(propertyFile);
    Properties pro=new Properties();
    try {
    pro.load(in);
    driver=pro.getProperty("driver");
    url=pro.getProperty("url");
    user=pro.getProperty("user");
    password=pro.getProperty("password");
    Class.forName(driver);
    } catch (IOException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    //获取数据库连接
    public static Connection getConn(){
    try {
    conn=DriverManager.getConnection(url,user,password);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return conn;
    }
    //因为经常要获取 PreparedStatement对象,所以把获取该对象的方法抽取出来方便复用。
    public static PreparedStatement getPStmt(String sql){
    try {
    pStmt=getConn().prepareStatement(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return pStmt;
    }
    //将 PreparedStatement参数赋值抽离出来,因为经常用到
    public static void setObjParameters(PreparedStatement pStmt,Object[] parameters){
    for(int i=0;i<parameters.length;i++){
    try {
    pStmt.setObject(i+1, parameters[i]);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    public static int execUpdate(PreparedStatement pStmt){
    int rowCount=0;
    try {
    rowCount=pStmt.executeUpdate();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return rowCount;
    }
    //封装 DML 操作包括 INSERT,UPDATE 返回影响数据表行数
    public static int execDML(String sql,Object[] parameters){
    int rowCount=0;
    pStmt=getPStmt(sql);
    setObjParameters(pStmt,parameters);
    rowCount=execUpdate(pStmt);
    return rowCount;

    //发现将方法封装起来,复用性可以提高。
    }

    //把获取 ResultSet 方法抽离出来,便于复用
    public static ResultSet getResultSet(PreparedStatement pStmt){
    try {
    rs=pStmt.executeQuery();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return rs;
    }


    //获取 查询的 count 数
    public static int getRowCount(String sql,Object[] parameters){
    int rowCount=0;
    setObjParameters(pStmt,parameters);
    rs=getResultSet(pStmt);
    try {
    while(rs.next()){
    rowCount=rs.getInt(1);
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return rowCount;
    }
    public static void main(String[] args){
    Connection conn=getConn();
    if(conn!=null){
    System.out.println("获取数据库连接成功!");
    }
    }
    }

    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    C# 中的高性能计时器(Daniel Strigl著,野比译)(转)
    C#中SerialPort类 随笔
    迭代器
    枚举数与可枚举类型(笔记)
    jQuery的关注与学习
    敏捷开发的4句宣言 大数据
    bat脚本
    c++动态库中回调函数使用
    C++中遍历lua table
    vs2010编译release版本却依赖debug版本库msvcrd100.dll
  • 原文地址:https://www.cnblogs.com/Frank99/p/5688712.html
Copyright © 2011-2022 走看看