Java Web总结十二JDBC

一、什么是JDBC?为什么使用JDBC?

  1、JDBC的全称是Java Data Base Connectivity(Java数据库连接)。SUN公司为使Java程序灵活的访问各种不同的关系型数据库提供的规则。

  2、使用JDBC的原因:

    1)降低Java程序操作数据库的成本。

    2)使Java程序灵活移植。

  3、开发JDBC需要导入相应JDBC的数据库实现(即数据库驱动)。MySql的数据库驱动包是mysql-connector-java-5.0.8-bin.jar。

二、JDBC连接数据库的各个步骤

  1、注册驱动:DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    注意:上述代码会向DriverManager注册二次相同的MySQL驱动,其中一次在Driver实现类中。推荐使用以下代码间接注册数据库驱动:

        Class.forName("com.mysql.jdbc.Driver");

       这种方式的优点是:1)只需注册一次。2)无需导入与具体数据库驱动相关的包。

  2、获取数据库连接对象:Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb2","root","root");

  3、关闭流:

    1)依次按ResultSet->Statement->Connection顺序关闭。

    2)在能完成业务的情况下尽早关闭。

三、JDBC的六个固定步骤:

  1、注册数据库驱动[利用反射]

  2、取得数据库连接对象Connection

  3、创建SQL对象

  4、执行SQL命令,并返回结果集

  5、处理结果集

  6、依次关闭结果集

四、MySql操作示例:

  1、db.properties文件内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb3
user=root
password=root

  2、JdbcUtil.java文件内容如下:

package com.gnnuit.web.jdbc;

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;

/**
 * JDBC工具类:关闭流和取得连接
 * 
 * @author YLY
 * 
 */
public final class JdbcUtil {
    private static String driver;
    private static String url;
    private static String user;
    private static String password;

    //静态块:加载配置文件
    static {
        Properties prop = new Properties();
        InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream(
                "com/gnnuit/web/jdbc/db.properties");
        try {
            prop.load(is);
            driver = prop.getProperty("driver");
            url = prop.getProperty("url");
            user = prop.getProperty("user");
            password = prop.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //静态块:注册驱动
    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 获取MySql数据库的连接
    public static Connection getMySqlConnection() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    // 关闭数据库的连接
    public static void closeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 关闭数据库的连接
    public static void closeStatement(Statement stmt) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 关闭数据库的连接
    public static void closeResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

  3、CRUD.java文件内容如下:

package com.gnnuit.web.jdbc;

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

import org.junit.Test;

public class CRUD {
    @Test
    public void create() {
        Connection conn = null;
        Statement stmt = null;
        String sql = "insert into student(id,name) values(14,'杨中科')";
        try {
            conn = JdbcUtil.getMySqlConnection();
            stmt = conn.createStatement();
            int rows = stmt.executeUpdate(sql);
            System.out.println(rows > 0 ? rows : "失败");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.closeStatement(stmt);
            JdbcUtil.closeConnection(conn);
        }
    }

    @Test
    public void read() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String sql = "select * from student";
        try {
            conn = JdbcUtil.getMySqlConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String name = rs.getString("name");
                System.out.println(name);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.closeResultSet(rs);
            JdbcUtil.closeStatement(stmt);
            JdbcUtil.closeConnection(conn);
        }
    }

    @Test
    public void update() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String sql = "update student set name='样样' where id=14";
        try {
            conn = JdbcUtil.getMySqlConnection();
            stmt = conn.createStatement();
            int rows = stmt.executeUpdate(sql);
            System.out.println(rows > 0 ? rows : "失败");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.closeResultSet(rs);
            JdbcUtil.closeStatement(stmt);
            JdbcUtil.closeConnection(conn);
        }
    }

    @Test
    public void delete() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String sql = "delete from student where id=14";
        try {
            conn = JdbcUtil.getMySqlConnection();
            stmt = conn.createStatement();
            int rows = stmt.executeUpdate(sql);
            System.out.println(rows > 0 ? rows : "失败");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.closeResultSet(rs);
            JdbcUtil.closeStatement(stmt);
            JdbcUtil.closeConnection(conn);
        }
    }
}

    

原文地址:https://www.cnblogs.com/FlySheep/p/3655688.html