当前位置: 首页 > news >正文

JDBC编程六步、IDEA开发的第一个JDBC程序

文章目录

  • 💖JDBC概述
    • ✨JDBC编程六步
  • 💖IDEA开发的第一个JDBC程序
    • ✨导入驱动
    • ✨实战代码
    • ✨注册驱动的第二种方式--类加载注册
    • ✨读取属性配置文件

💖JDBC概述

1.什么是JDBC?
Java DataBase Connectivity
在java语言中编写sq1语句,对mysq1数据库中的数据进行CRUD操作。

2.JDBC相关的类库在哪里?
java.sq1. * ;

3.JDBC本质上是一堆什么呢?
java.sq1. * ;这个包下都是JDBC的接口,SUN公司制定的!
JDBC是体现"接口作用"的非常经典的例子。 JDBC降低了耦合度,提高了扩展力。
对于java程序员来说,不需要关心数据库是哪个品牌。只要面向JDBC接口编程就行!

✨JDBC编程六步

JDBC编程六步
1、注册驱动
(通知java程序我们即将要连接的是哪个品牌的数据库)
2、获取数据库连接
(java进程和mysql进程,两个进程之间的通道开启了)(java进程可能在北京,mysql进程在上海)
3、获取数据库操作对象
这个对象很重要,用这个对象执行SOL的。
4、执行SQL语句
执行CRUD操作
5、处理查询结果集
如果第四步是select语句,才有这个第五步
6、释放资源
关闭所有的资源(因为JDBC毕意是进程之间的通信,占用很多资源的,需要关闭!

💖IDEA开发的第一个JDBC程序

✨导入驱动

这里我们介绍的是最朴素的导入MySQL驱动的方法,就是直接导入jar包的方式。

首先在包下面创建一个专门放jar包的目录
在这里插入图片描述
然后把驱动粘贴到这个新建的目录下面
在这里插入图片描述
选中驱动,然后右键–选择Add as Libary
在这里插入图片描述
然后点击ok,加到这个库里面就行了
在这里插入图片描述

✨实战代码

public class IDEA开发的第一个JDBC程序 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //注册驱动
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            //获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/feifei","root","123456");
            //获取数据库操作对象
            stmt = conn.createStatement();
            //执行SQL
            String sql = "select e.ename , d.dname from emp e join dept d on e.deptno=d.deptno ";
            rs = stmt.executeQuery(sql);
            //处理查询结果集
            while (rs.next()){
                String ename = rs.getString("ename");
                String dname = rs.getString("dname");
                System.out.println(ename+","+dname);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //释放资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

✨注册驱动的第二种方式–类加载注册

在这里插入图片描述
代码演示

public class 注册驱动的第二种方式 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1注册驱动
            //oracle数据库:Class.forName("oracle.jdbc.driver.OracleDriver");
            Class.forName("com.mysql.jdbc.Driver");
            //2获取连接
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/feifei","root","123456");

            //3.获取数据库操作对象
            stmt = conn.createStatement();
            //4.执行SQL语句
            String sql = "select a.ename as '员工' ,b.ename as '领导' from emp a left join emp b on a.mgr = b.empno";
            rs = stmt.executeQuery(sql);//返回结果集
            //5.处理查询结果集
            while (rs.next()){
                String  ename = rs.getString("员工");
                String  lname = rs.getString("领导");
                System.out.println(ename +","+ lname);
            }

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

✨读取属性配置文件

在这里插入图片描述
首先创建一个属性配置文件,(以.properties结尾的)
在里面把下面几项单独提取出来,好处是如果需要改动,直接来配置文件就行,不用动java源程序了。

在这里插入图片描述
代码演示

public class 读取属性配置文件 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        //资源绑定器
        ResourceBundle bundle =ResourceBundle.getBundle("db");
        //通过属性配置文件拿到信息
        String driver = bundle.getString("driver");
        String url = bundle.getString("url");
        String user = bundle.getString("user");
        String password = bundle.getString("password");
/*        System.out.println(driver);
        System.out.println(url);
        System.out.println(user);
        System.out.println(password);*/
        try {
            //1注册驱动
            //oracle数据库:Class.forName("oracle.jdbc.driver.OracleDriver");
            Class.forName(driver);
            //2获取连接
            conn = DriverManager.getConnection(url,user,password);

            //3.获取数据库操作对象
            stmt = conn.createStatement();
            //4.执行SQL语句
            String sql = "select a.ename as '员工' ,b.ename as '领导' from emp a left join emp b on a.mgr = b.empno";
            rs = stmt.executeQuery(sql);//返回结果集
            //5.处理查询结果集
            while (rs.next()){
                String  ename = rs.getString("员工");
                String  lname = rs.getString("领导");
                System.out.println(ename +","+ lname);
            }

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

好啦本期到此结束,感兴趣的话可以关注博主的相关专栏,期待您的三连加关注。
在这里插入图片描述

相关文章:

  • 强化学习——day35 读论文:基于深度强化学习的网约车动态路径规划
  • 【408计算机组成原理】—原码、反码、补码、移码(六)
  • Vue入门【九】-- 动态路由和嵌套路由
  • Python数据类型:序列(列表list、元组tuple)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • 算法分析与设计:10 大排序算法大汇总(Java)
  • 【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型
  • Google Earth Engine(GEE)——GEE错误结果没有变化?
  • 《Improved Techniques for Training GANs》-论文阅读笔记
  • 十一假期,分享几个好玩儿的GitHub项目
  • AcWing 第71场周赛
  • Redis实战 - 02 Redis 保存短信验证码实现用户注册
  • AcWing——第 71 场周赛
  • 利用Vulhub复现log4j漏洞CVE-2021-44228
  • 【学生网页设计作业源码】基于html+css保护海豚主题网页设计与制作(7页)
  • Java比较器对数组,集合排序
  • nodejs实现webservice问题总结
  • opencv python Meanshift 和 Camshift
  • Python语法速览与机器学习开发环境搭建
  • Quartz初级教程
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • WebSocket使用
  • 浮现式设计
  • 基于axios的vue插件,让http请求更简单
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 解决iview多表头动态更改列元素发生的错误
  • 力扣(LeetCode)21
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 再次简单明了总结flex布局,一看就懂...
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1)(1.13) SiK无线电高级配置(五)
  • (4)STL算法之比较
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二)hibernate配置管理
  • (三)终结任务
  • (学习日记)2024.01.09
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)Linux网络编程入门
  • .describe() python_Python-Win32com-Excel
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • /bin/bash^M: bad interpreter: No such file or directory
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @javax.ws.rs Webservice注解
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [\u4e00-\u9fa5] //匹配中文字符
  • [20160902]rm -rf的惨案.txt
  • [BIZ] - 1.金融交易系统特点
  • [c#基础]DataTable的Select方法
  • [CISCN2019 华东南赛区]Web4