JDBC编程步骤

导入MySQL jar包(mysql-connector-java-5.0.8-bin.jar  ojdbc14.jar)

 

步骤一 装载驱动 DriverManager.registerDriver(new Driver());//该方法会将驱动装载两次,开发中通常使用Class.forName("com.mysql.jdbc.Driver");的方式加载驱动
步骤二 建立连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day13", "root", "abc");
步骤三 操作数据SQL 对于结果集处理
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
  System.out.println(rs.getString("username"));
  System.out.println(rs.getString("email"));
}
步骤四 释放资源
rs.close();
statement.close();
conn.close();

-----------------------------------------------------------------------------------------------------------------------------------------------------

基础操作代码:

package cn.itcast.jdbc;

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

import org.junit.Test;

public class JDBCTest {
    @Test
    public void demo4() {
        // 查询user表所有数据
        // 装载驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("数据库装载驱动失败!");
        }

        // 数据库操作
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            conn = DriverManager.getConnection("jdbc:mysql:///day13", "root",
                    "abc");
            String sql = "select * from user";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

            while (rs.next()) {
                System.out.println(rs.getString("username"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源时,先开的资源后关
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                rs = null;
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                stmt = null;
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                conn = null;
            }
        }

    }

    @Test
    public void demo3() throws Exception {
        // 滚动结果集 案例:将wangwu的username 改为 王五
        Class.forName("com.mysql.jdbc.Driver");

        Connection conn = DriverManager.getConnection("jdbc:mysql:///day13",
                "root", "abc");

        // 指定结果集支持滚动,并且可以修改
        Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_UPDATABLE);

        String sql = "select * from user";

        ResultSet rs = stmt.executeQuery(sql);

        rs.absolute(3); // 等价于 next 3次
        // 修改username 值为王五
        rs.updateString("username", "王五");
        // 提交修改
        rs.updateRow();

        rs.close();
        stmt.close();
        conn.close();
    }

    @Test
    public void demo2() throws Exception {
        // 通过JDBC连接Oracle
        // 步骤一 加载mysql驱动实现类
        // DriverManager.registerDriver(new Driver());
        Class.forName("oracle.jdbc.driver.OracleDriver");

        // 步骤二 通过驱动管理器,获得数据库连接
        Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:xe", "system", "123");

        // 步骤三 向数据库发送SQL 语句 执行
        String sql = "select * from users";
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(sql);

        // 对结果集进行操作
        while (rs.next()) {
            System.out.println(rs.getString("username"));
            System.out.println(rs.getString("email"));
        }

        // 步骤四 操作数据库后 ,关闭资源
        rs.close();
        statement.close();
        conn.close();
    }

    @Test
    public void demo1() throws Exception {
        // 编写第一个JDBC程序
        // 步骤一 加载mysql驱动实现类
        // DriverManager.registerDriver(new Driver());
        Class.forName("com.mysql.jdbc.Driver");

        // 步骤二 通过驱动管理器,获得数据库连接
        Connection conn = DriverManager.getConnection("jdbc:mysql:///day13",
                "root", "abc");

        // 步骤三 向数据库发送SQL 语句 执行
        String sql = "select * from user";
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery(sql);

        // 对结果集进行操作
        while (rs.next()) {
            System.out.println(rs.getString("username"));
            System.out.println(rs.getString("email"));
        }

        // 步骤四 操作数据库后 ,关闭资源
        rs.close();
        statement.close();
        conn.close();
    }
}

 

JDBC的CRUD操作:

package cn.itcast.jdbc;

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

import org.junit.Test;

import cn.itcast.utils.JDBCUtils;

/**
 * JDBC对user表进行增删改查 c - create r--- read u --- update d --- delete
 * 
 * @author seawind
 * 
 */
public class JDBCCRUD {
    @Test
    // 数据的查询
    public void testSelect() {
        // 建立连接
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "select * from user";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.println(rs.getString("username"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            JDBCUtils.release(rs, stmt, conn);
        }
    }

    @Test
    // 数据的删除
    public void testDelete() {
        // 建立连接
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            // 操作SQL
            String sql = "delete from user where username='王五'";
            stmt = conn.createStatement();
            int affectedRowNum = stmt.executeUpdate(sql);
            System.out.println(affectedRowNum);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            JDBCUtils.release(stmt, conn);
        }
    }

    @Test
    // 数据的修改
    public void testUpdate() {
        // 建立连接
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            // 操作SQL
            String sql = "update user set password = 111"; // 修改所有人密码111
            stmt = conn.createStatement();
            int affectedRowNum = stmt.executeUpdate(sql);
            System.out.println(affectedRowNum);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            JDBCUtils.release(stmt, conn);
        }
    }

    @Test
    // 数据的增加
    public void testAdd() {
        // 建立连接
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = JDBCUtils.getConnection();
            // 操作SQL
            String sql = "insert into users values(null,'赵六','123','zhaoliu@itcast.cn')";
            stmt = conn.createStatement();
            int affectedRowNum = stmt.executeUpdate(sql);
            System.out.println(affectedRowNum);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            JDBCUtils.release(stmt, conn);
        }

    }
}

 

自定义工具类:

package cn.itcast.utils;

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

/**
 * 将增删改查操作中重复代码提取出来
 * 
 * @author seawind
 * 
 */
public class JDBCUtils {
    // 将与数据库相关参数,抽取出来 放到配置文件中
    private static String driverClass;
    private static String url;
    private static String user;
    private static String password;

    static {
        driverClass = ResourceBundle.getBundle("db").getString("driverClass");
        url = ResourceBundle.getBundle("db").getString("url");//db.properties文件位于src目录下即可
        user = ResourceBundle.getBundle("db").getString("user");
        password = ResourceBundle.getBundle("db").getString("password");
    }

    // 建立连接
    public static Connection getConnection() throws SQLException {
        loadDriver();
        return DriverManager.getConnection(url, user, password);
    }

    private static void loadDriver() {
        // 装载驱动
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("驱动加载失败!");
        }
    }

    public static void release(ResultSet rs, Statement stmt, Connection conn) {
        // 释放资源
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        release(stmt, conn);
    }

    public static void release(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            stmt = null;
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            conn = null;
        }
    }
}

 

db.properties(位于工程src目录下):

#mysql
driverClass = com.mysql.jdbc.Driver
url = jdbc:mysql:///day13
user = root
password =root

#oracle
#driverClass = oracle.jdbc.driver.OracleDriver
#url = jdbc:oracle:thin:@localhost:1521:xe
#user = system
#password =123

 

posted @ 2014-08-10 22:26  vaer  阅读(255)  评论(0编辑  收藏  举报