JDBC(Java DataBaseConnectivity)

本文详细介绍了JDBC的概念,包括其作为Java语言操作数据库的接口规范,以及如何通过JDBC进行数据库连接、执行SQL语句、管理事务和使用连接池等关键操作。同时,文章提供了具体的代码示例,帮助读者理解JDBC的使用方法。

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

1.JDBC的概念
JDBC:Java DataBase Connectivity Java数据库连接,java语言操作数据库
jabc的本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)进行编程,真正执行的代码是驱动jar包中的实现类
在这里插入图片描述
2.JDBC访问数据库的步骤
(1)导入驱动jar包
在这里插入图片描述
(2)注册驱动 (告诉程序使用哪一个数据库驱动jar) Class.forName(“com.mysql.jdbc.Driver”);
(3)建立连接 con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,username,password)
(4)定义sql
(5)获取执行sql的statement或prepareStatement对象 con.createStatement();
(6)执行sql
(7)处理结果
(8)释放资源

DriverManager:驱动管理对象
在这里插入图片描述
在这里插入图片描述
Connection:数据路连接对象 在这里插入图片描述
Statement:执行sql对象
在这里插入图片描述

public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
        String sql="select * from user";
        //获取执行对象
        Statement statement = con.createStatement();
        //执行sql语句
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()) {
            resultSet.getInt(1);
            resultSet.getString("name");
            resultSet.getDouble(3);
        }
        resultSet.close();   //注意释放顺序,先申请的后释放
        statement.close();
        con.close();
    }

PrepareStatement:执行sql的对象
在这里插入图片描述

public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
        String sql="select * from user where username=? and password=?";
        //获取执行对象
        PreparedStatement preparedStatement = con.prepareStatement(sql);
        //给参数赋值
        preparedStatement.setString(1,"张三");
        preparedStatement.setString(2,"123456");
        //执行sql语句
        ResultSet resultSet = preparedStatement.executeQuery(sql);
        while(resultSet.next()) {
            resultSet.getInt(1);
            resultSet.getString("name");
            resultSet.getDouble(3);
        }
        resultSet.close();   //注意释放顺序,先申请的后释放
        preparedStatement.close();
        con.close();
    }

ResultSet:结果集对象,封装查询结果
在这里插入图片描述
3.JDBC管理事物
事物:一个包含一条或多条数据库操作的不可分割的执行单元,在同一个事物中的操作要么全部成功,要么全部失败
在这里插入图片描述

public static void main(String[] args) {
        Connection con=null;
        PreparedStatement ps1=null;
        PreparedStatement ps2=null;
        try {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            con.setAutoCommit(false);
            String sql1="update account set balance=balance-?where id=?";
            String sql2="update account set balance=balance+? where id=?";
            ps1 = con.prepareStatement(sql1);
            ps2=con.prepareStatement(sql2);
            ps1.setDouble(1,500);
            ps1.setInt(2,1);
            ps2.setDouble(1,500);
            ps2.setInt(2,2);
            int i = ps1.executeUpdate();
            int i1 = ps2.executeUpdate();
            con.commit();

        }catch(Exception e){
            try {
                con.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }finally{
                   try {
                       if (ps1!=null) ps1.close();
                       if (ps2!=null) ps2.close();
                       if (con!=null) con.close();
                   } catch (SQLException e) {
                       e.printStackTrace();
                   }
        }
    }

4.数据库连接池
概念:其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后连接池被创建,容器就会申请一些连接对象。当容器访问数据库时,从容器中获取连接,访问完归还给池子。 在这里插入图片描述 在这里插入图片描述
//创建数据库连接池对象
DataSource ds=new CombopooledDataSource();
//获取连接
Connection conn = ds.getConnection(); 在这里插入图片描述 在这里插入图片描述
5.JDBCTemplate
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值