JDBC笔记与Connection

JDBC是Java操作数据库的API,定义了操作关系型数据库的规则,由数据库厂商提供实现。它允许代码不针对特定数据库编写,方便更换底层数据库。本文详细介绍了JDBC的概念、本质、好处,并讲解了如何通过Java建立数据库连接,执行SQL,以及Connection对象在事务管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#博学谷IT学习技术支持##博学谷IT学习技术支持#

JDBC概念:

JDBC( Java DataBase Connectivity ) Java 数据库连接 ,就是使用Java语言操作关系型数据库的一套API。

同一套Java代码操作不同的关系型数据库,而此时sun公司就指定了一套标准接口(JDBC),JDBC中定义了所有操作关系型数据库的规则。众所周知接口是无法直接使用的,我们需要使用接口的实现类,而这套实现类(称之为:驱动)就由各自的数据库厂商给出。1.2 JDBC本质

JDBC本质:

1.官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口

2.各个数据库厂商去实现这套接口,提供数据库驱动jar包

3.我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

JDBC好处:

1.各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发

2.可随时替换底层数据库,访问数据库的Java代码基本不变

通过Java操作数据库的流程:

1.编写Java代码

2.Java代码将SQL发送到MySQL服务端

3.MySQL服务端接收到SQL语句并执行该SQL语句

4.将SQL语句执行的结果返回给Java代码

代码编写步骤:

1.创建工程,导入驱动jar包

2.注册驱动

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

 3.获取连接

Connection conn = DriverManager.getConnection(url, username, password);

4.定义SQL语句

String sql =  “update…” ;

5.获取执行SQL对象

Statement stmt = conn.createStatement();

6.执行SQL

stmt.executeUpdate(sql);  

7.处理返回结果

8.释放资源

Connection:

Connection(数据库连接对象)作用:

1.获取执行 SQL 的对象。

2.管理事务。

获取执行对象:

1.普通执行SQL对象。

Statement createStatement()

2.预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement  prepareStatement(sql)

通过这种方式获取的 PreparedStatement SQL语句执行对象,它可以防止SQL注入。

3.执行存储过程的对象

CallableStatement prepareCall(sql)

通过这种方式获取的 CallableStatement 执行对象是用来执行存储过程的,而存储过程在MySQL中并不常用。

Connection接口中定义的3个方法:

1.开启事务

2.提交事务

3.回滚事务

 

 代码如下:

/**
 * JDBC API 详解:Connection
 */
public class JDBCDemo3_Connection {

    public static void main(String[] args) throws Exception {
        //1. 注册驱动
        //Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
        String url = "jdbc:mysql:///db1?useSSL=false";
        String username = "root";
        String password = "****";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql1 = "update account set money = 3000 where id = 1";
        String sql2 = "update account set money = 3000 where id = 2";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();

        try {
            // ============开启事务==========
            conn.setAutoCommit(false);
            //5. 执行sql
            int count1 = stmt.executeUpdate(sql1);//受影响的行数
            //6. 处理结果
            System.out.println(count1);
            int i = 3/0;
            //5. 执行sql
            int count2 = stmt.executeUpdate(sql2);//受影响的行数
            //6. 处理结果
            System.out.println(count2);

            // ============提交事务==========
            //程序运行到此处,说明没有出现任何问题,则需求提交事务
            conn.commit();
        } catch (Exception e) {
            // ============回滚事务==========
            //程序在出现异常时会执行到这个地方,此时就需要回滚事务
            conn.rollback();
            e.printStackTrace();
        }

        //7. 释放资源
        stmt.close();
        conn.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值