JDBC基础--连接和操作

1.JDBC介绍
1.1 核心JDBC接口规范
DriverManager 驱动管理器
Connection 连接
Statement 操作状态 (子接口 PreparedStatement、 CallableStatement)
ResultSet 结果集
1.2 第一个JDBC程序
(1)搭建数据库环境: 启动mysql服务、连接mysql,创建数据库、切换数据库、创建数据表、插入数据。
(2)创建web工程 、导入数据库驱动 将jar包复制到WEB-INF/lib
(3)新建java程序 使用JDBC接口规范连接数据库:装载驱动、建立连接、将sql语句发送给数据库执行、释放资源。
2. JDBC 实用程序
2.1 JDBC工具类
建立JDBC的工具类,提高程序的实用性。将装载驱动、建立连接和释放资源方法提取公共方法建立工具类。同时将连接信息写入配置文件。
(1)将连接信息写入配置文件

DRIVERCLASS=com.mysql.jdbc.Driver
URL=jdbc:mysql:///day14
USER=root
PWD=123

(2)创建工具类

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

public class JDBCUtils {
//定义变量
    private static final String DRIVERCLASS;
    private static final String URL;
    private static final String USER;
    private static final String PWD;
//读取配置文件中的信息
    static {
        ResourceBundle bundle = ResourceBundle.getBundle("dbconfig");
        DRIVERCLASS = bundle.getString("DRIVERCLASS");
        URL = bundle.getString("URL");
        USER = bundle.getString("USER");
        PWD = bundle.getString("PWD");
    }

    // 建立连接
    public static Connection getConnection() throws Exception {
        loadDriver();
        return DriverManager.getConnection(URL, USER, PWD);
    }

    // 装载驱动
    private static void loadDriver() throws ClassNotFoundException {
        Class.forName(DRIVERCLASS);
    }

    // 释放资源
    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;
        }
    }
}

2.2 数据的增删改查
(1)插入数据

public void demo1() throws Exception {
        Connection conn = null;
        Statement stmt = null;

        try {
            // 建立连接
            conn = JDBCUtils.getConnection();
            // 操作数据
            stmt = conn.createStatement();
            String sql = "insert into users values(5,'eee','1234','eee@itcast.cn')";
            int row = stmt.executeUpdate(sql);
            System.out.println(row);// 插入成功 1 失败 0
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(stmt, conn);
        }

    }

(2)修改数据

public void demo2() throws Exception {
        Connection conn = null;
        Statement stmt = null;

        try {
            // 建立连接
            conn = JDBCUtils.getConnection();
            // 操作数据库
            stmt = conn.createStatement();
            String sql = "update users set email = 'service@itcast.cn' where name='eee'";
            int row = stmt.executeUpdate(sql);
            System.out.println(row); // 如果row 为0 失败,不为0 成功
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(stmt, conn);
        }

    }

(3)删除数据

public void demo3() throws Exception {
        Connection conn = null;
        Statement stmt = null;

        try {
            // 建立连接
            conn = JDBCUtils.getConnection();
            // 操作数据库
            stmt = conn.createStatement();
            String sql = "delete from users where name = 'bbb'";
            int row = stmt.executeUpdate(sql);
            System.out.println(row); // 如果row 为0 失败,不为0 成功
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(stmt, conn);
        }
    }

(4)查询数据

public void demo4() throws Exception {
        // 查询返回结果集
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            conn = JDBCUtils.getConnection();
            stmt = conn.createStatement();
            String sql = "select * from users";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, stmt, conn);
        }
    }

2.3 接口
(1)Connection接口 —- JDBC连接表示接口
* Connection接口一个对象 代表 一个数据库 连接
作用两点:
1) 获得操作数据库Statement对象
createStatement() —– Statement 获得普通操作状态对象
prepareStatement(String sql) —– PreparedStatement(是Statement子接口) 预编译状态对象
prepareCall(String sql) —— CallableStatement(是PreparedStatement子接口) 操作数据库内部存储过程的
* Statement对象可以向数据库发送sql语句,获得ResultSet结果集

2) 进行事务控制
setAutoCommit(boolean) ; 开启一个事务
commit(); 提交一个事务
rollback(); 回滚一个事务

(2)Statement接口 —- 代表一个操作状态
作用:操作数据库SQL语句、调用存储过程
executeQuery(String sql) :用于向数据发送查询语句。select语句,返回值ResultSet 结果集
executeUpdate(String sql):用于向数据库发送insert、update或delete语句 返回值int 受影响行数
execute(String sql):用于向数据库发送任意sql语句 — 建立数据库 建立数据表,增删改查 — 返回值boolean
* sql结果是ResultSet 返回true — 否则false

批处理 —- 一次执行多条sql
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值