JDBC编程六步

JDBC编程六步

总体步骤

​ 第一步:注册驱动 (告诉java,即将连接的是什么数据库)

​ 第二步:获取连接 (表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通 信,重量级,使用后一定要关闭)

​ 第三步:获取数据库操作对象(专门执行sql语句的对象)

​ 第四步:执行SQL语句 (DQL DML …)

​ 第五步:处理查询结果集 (只有当第四步是select语句的时候,才有这第五步处理查询结果集)

​ 第六步:释放资源 (java和数据库属于进程间的通信,开启后一定要关闭)

第一步、注册驱动

代码

new写法(不常用)

//1、注册驱动 
Driver driver = new com.mysql.cj.jdbc.Driver(); //多态,父类型引用指向子类型
// Driver driver = new oracle.jdbc.driver.OracleDriver();  oracle 驱动
DriverManager.registerDriver(driver);

反射写法(常用)

 //1、注册驱动
            Class.forName(com.mysql.cj.jdbc.Driver);

第二步:获取连接

URL 包括哪几部分
协议
ip
PORT 端口号
资源名
http://182.61.22.7:80/index.html
http:// 通信协议
182.61.22.7 服务器ip地址
80 服务器上软件的端口
index.html 是服务器上某个资源名

说明:localhost和127.0.0.1都是本机ip

什么是通信协议,有什么用?
通信协议是通信之前就提前定好的数据传送格式。
数据包具体怎么传送数据,格式是提前定好的

//Oracel url
Oracle JDBC: Oracle:thin:@localhost:1521:orcl

代码

//2、获取连接
String url = "jdbc:mysql://127.0.0.1:3306/csdb?serverTimezone=UTC";
String user = "root";
String password = "******";
Connection conn = DriverManager.getConnection(url, user, password);
//com.mysql.cj.jdbc.ConnectionImpl@c81cdd1
System.out.println("连接对象:" + conn);

第三步:获取数据库操作对象

代码

//3、获取数据库操作对象
//Startement专门执行sql语句。
Statement stmt = conn.createStatement();

第四步:执行SQL语句

​ 注意:JDBC中的sql语句不需要提供分号结尾

//4、执行sql
//insert
String sql = "insert into dept values(50,'人事部','北京')";
//专门执行DML语句的(insert ,delete ,update)
//返回值是“影响你数据库中的记录条数”
int count = stmt.executeUpdate(sql);
System.out.println(count == 1 ? "保存成功" : "保存失败");

//delete
String sql = "delete from dept where deptno = 50";
int count = stmt.executeUpdate(sql);
System.out.println(count == 1 ? "删除成功" : "删除失败");

//updata
String sql = "update dept set deptno = 60 where deptno = 50  ";
System.out.println(count == 1 ? "更新成功" : "更新失败");
System.out.println(count == 1 ? "更新成功" : "更新失败");

//create
String sql = "select empno ,ename,sal from emp";
ResultSet rs = stmt.executeQuery(sql);

第五步:处理查询结果集

​ 5、处理结果集
​ rs.next 会使结果集光标向下移一个,若移动后的位置有数据返回true,否则返回false
​ rs.getString,取出数据,无论什么类型,都转换成String类型,数据库第几列从1开始

while (rs.next()) {
    //这里最好使用查询结果的列名的名称
    int empno = rs.getInt("empno");
    String ename = rs.getString("ename");
    double sal = rs.getDouble("sal");
    System.out.println(empno + ',' + ename + ',' + sal);
}

遍历rs原理图

在这里插入图片描述

第六步:释放资源

释放资源
为了保证资源一定释放,在finally语句块中关闭资源
并且要遵循从到大依次关闭
分别对其try。。catch

try {
    if (rs != null) {
        rs.close();
    }
} catch (SQLException throwables) {
    throwables.printStackTrace();
}
try {
    if (stmt != null) {
        stmt.close();
    }
} catch (SQLException throwables) {
    throwables.printStackTrace();
}
try {
    if (conn != null) {
        conn.close();
    }
} catch (SQLException throwables) {
    throwables.printStackTrace();
}

利用资源绑定器来写jdbc编程

​ jdbc.properties文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/csdb?serverTimezone=UTC
user=root
password=lh051920

​ 代码文件

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


public class jdbc资源绑定器配置 {

    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("JDBC注册驱动与获取驱动/jdbc");
        Connection conn = null;
        Statement stmt = null;

        String driver = bundle.getString("driver");
        String url = bundle.getString("url");
        String user = bundle.getString("user");
        String password = bundle.getString("password");
        try {
            //1、注册驱动
            Class.forName(driver);

            conn = DriverManager.getConnection(url, user, password);
            //com.mysql.cj.jdbc.ConnectionImpl@c81cdd1
            System.out.println("连接对象:" + conn);

            //3、获取数据库操作对象
            //Startement专门执行sql语句。
            stmt = conn.createStatement();

            //4、执行sql
            String sql = "delete from dept where deptno = 60 or deptno = 70 or deptno = 90";
            //专门执行DML语句的(insert ,delete ,update)
            //返回值是“影响你数据库中的记录条数”
            int count = stmt.executeUpdate(sql);
            System.out.println(count == 1 ? "保存成功" : "保存失败");

            //5、处理结果集


        } catch (Exception throwables) {
            throwables.printStackTrace();
        } finally {
            //6、释放资源
            //为了保证资源一定释放,在finally语句块中关闭资源
            //并且要遵循从到大依次关闭
            //分别对其try。。catch
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }


}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LvhaoIT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值