JdbcUtils

JdbcUtils

项目结构

 
db.properties
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql:///myTest
username=root
password=root
JdbcUtils
package com.pers.jdbc.utils;

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

/** 
* @author liangyadong 
* @date 2016年10月13日 下午3:23:22 
* @version 1.0 
*/
public class JdbcUtils {

    public static final String DRIVERCLASS;
    public static final String URL;
    public static final String USERNAME;
    public static final String PASSWORD;
    
    /**
     * 静态代码块
     * 
     * 步骤
     * 1.创建properties对象
     * 2.获取db配置文件的输入流
     * 3.properties对象加载配置文件
     * 4.properties对象通过key获取值
     */
    static{
        // 读取配置文件,将值赋给常量
        // 创建properties对象
        Properties pro = new Properties();
        
        // 获取db.properties文件的输入流
        InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("com/pers/jdbc/utils/db.properties");
        
        // 加载配置文件
        try {
            pro.load(in);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 通过key获取值
        DRIVERCLASS = pro.getProperty("driverClass");
        URL = pro.getProperty("url");
        USERNAME = pro.getProperty("username");
        PASSWORD = pro.getProperty("password");
        
    }
    
    /**
     * 加载驱动
     */
    public static void loadDriver(){
        try {
            Class.forName(DRIVERCLASS);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**
     * 获取连接
     * @return
     */
    public static Connection getConnection() {
        // TODO Auto-generated method stub
        // 加载驱动
        loadDriver();
        try {
            // 获取连接
            return DriverManager.getConnection(URL,USERNAME,PASSWORD);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return null;
    }
    
    /**
     * 释放资源
     * 
     * 查询的释放资源方法
     * @param conn
     * @param sta
     * @param rs
     */
    public static void release(Connection conn,Statement sta,ResultSet rs){
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            rs = null;
        }
        if (sta!=null) {
            try {
                sta.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sta = null;
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn = null;
        }
    }
    
    /**
     * 释放资源
     * 
     * 增删改的释放资源方法
     * @param conn
     * @param sta
     */
    public static void release(Connection conn,Statement sta){
        if (sta!=null) {
            try {
                sta.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sta = null;
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            conn = null;
        }
    }
    

}

JdbcTest

package com.pers.jdbc.demo;

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

import org.junit.Test;

import com.pers.jdbc.utils.JdbcUtils;

/** 
* @author liangyadong 
* @date 2016年10月13日 上午11:01:22 
* @version 1.0 
*/
public class JdbcTest2 {

    /**
     * 测试添加数据
     */
    @Test
    public void InsertTest(){
        /**
         * 步骤
         * 1.加载驱动
         * 2.获取连接
         * 3.编写sql
         * 4.获取执行sql的对象
         * 5.执行sql
         * 6.释放资源
         */
        Connection conn = null;
        Statement sta = null;
        
        try {
            // 加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            
            // 获取连接
            conn = DriverManager.getConnection("jdbc:mysql:///myTest","root","root");
            
            // 编写插入sql
            String sql = "insert into t_user values (null,'ddd','123','ddd@163.com')";
            
            // 获取执行sql的对象
            sta = conn.createStatement();
            
            // 执行sql
            /*boolean b = sta.execute(sql);
            if (b=true) {
                System.out.println("添加数据成功!");
            }*/
            //
            int i = sta.executeUpdate(sql);
            if (i>0) {
                System.out.println("添加数据成功!");
            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            /**
             * 释放资源
             */
            if (sta!=null) {
                try {
                    sta.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                sta=null;
            }
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                conn=null;
            }
        }
    }
    
    
    /**
     * 修改第四条数据名称为eee
     */
    @Test
    public void UpdateTest(){
        /**
         * 步骤
         * 1.加载驱动
         * 2.获取连接
         * 3.编写修改数据的sql
         * 4.创建执行sql的对象
         * 5.执行sql
         * 6.释放资源
         */
        
        Connection conn = null;
        Statement sta = null;
        
        try {
            // 加载驱动
            Class.forName("com.mysql.jdbc.Driver");
        
            // 获取连接
            conn = DriverManager.getConnection("jdbc:mysql:///myTest","root","root");
            
            // 编写修改数据的sql
            String sql = "update t_user set username='eee' where id = '4'";
            
            // 创建执行sql的对象
            sta = conn.createStatement();
            
            // 执行sql
            int i = sta.executeUpdate(sql);
            if (i>0) {
                System.out.println("修改数据成功!");
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            /**
             * 释放资源
             */
            if (sta!=null) {
                try {
                    sta.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                sta=null;
            }
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                conn=null;
            }
        }
        
    }
    
    /**
     * 删除数据测试
     * 删除第四条数据
     */
    @Test
    public void DeleteTest(){
        /**
         * 步骤
         * 1.加载驱动
         * 2.获取连接
         * 3.编写sql
         * 4.创建执行sql的对象
         * 5.执行sql
         * 6.释放资源
         */
        
        Connection conn = null;
        Statement sta = null;
        
        try {
            // 加载驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 获取连接
            conn = DriverManager.getConnection("jdbc:mysql:///myTest","root","root");
        
            // 编写sql
            String sql = "delete from t_user where id = '4'";
            
            // 创建执行sql的对象
            sta = conn.createStatement();
            
            // 执行sql
            int i = sta.executeUpdate(sql);
            if (i>0) {
                System.out.println("删除数据成功!");
            }
        
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            /**
             * 释放资源
             */
            if (sta!=null) {
                try {
                    sta.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                sta = null;
            }
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                conn=null;
            }
        }
    }
    
    /**
     * 测试查询数据
     * 使用jdbc工具类
     */
    @Test
    public void query(){
        /**
         * 步骤
         * 1.加载驱动
         * 2.获取连接
         * 3.编写sql
         * 4.创建执行sql的对象
         * 5.执行sql
         * 6.遍历结果
         * 7.释放资源
         */
        Connection conn = null;
        Statement sta = null;
        ResultSet rs = null;
        
        try {
            // 加载驱动获取连接
            conn = JdbcUtils.getConnection();
            
            // 编写sql
            String sql = "select * from t_user";
            
            // 创建执行sql的对象
            sta = conn.createStatement();
            
            // 执行sql
            rs = sta.executeQuery(sql);
            
            // 遍历结果
            while(rs.next()){
                int id = rs.getInt("id");
                String username = rs.getString("username");
                String email = rs.getString("email");
                
                System.out.println(id+"-"+username+"-"+email);
            }
            
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn, sta, rs);
        }
    }
    
    
}

输入流路径: 包名/文件名

*注意:相对路径开头是没有斜杠的

原文地址:https://www.cnblogs.com/yadongliang/p/5967600.html