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

JDBC初相识

文章目录

  • JDBC的由来
    • JDBC的好处
  • JDBC核心API的介绍
    • JDBC会用到的包
    • JDBC四个核心对象
    • JDBC访问数据库的步骤

在这里插入图片描述


客户端操作MySQL数据库的方式

  1. 使用第三方客户端来访问MySQL:SQLyog、Navicat

  2. 使用MySQL自带的命令行方式

  3. 通过Java来访问MySQL数据库,今天要学习的内容

    如何通过Java代码去操作数据库呢?

    Java中给我们提供专门的一套技术,可以通过其中的某些类和接口操作任何的数据库,这个技术就是今天要学习的JDBC。

    什么是JDBC:Sun公司为了简化、统一对数据库的操作,定义了一套java操作数据库的接口的规范,称之为JDBC。JDBC的全称为:java database connection (java和 数据库的连接 ) 就是使用java代码来操作数据库。
    JDBC的作用:Java通过JDBC就可以操作数据库


JDBC的由来

java程序依赖于jdk,jdk和数据库是2个不同的应用程序,那他们是怎么进行访问的呢?

要想搞清楚这个问题,我们必须了解下电脑是如何和其他硬件设备交互的。假设我们电脑安装完系统之后是一个无驱动的操作系统。那么当我们电脑想播放声音,即安装音响,必须得安装声卡驱动。同时电脑想和u盘硬件进行交互,也必须在电脑上安装对应的驱动。如果驱动安装失败,很显然他们是不能正常的交互的。这个安装驱动的其实就是为了定义他们两个相互交互的规则。只有统一了规则,才能交互。

同理:java程序想和数据库进行交互,也必须得安装数据库驱动,这样才能交互。但是,我们数据库有多种,这样就会导致不同的数据库具备不同的数据库驱动。

从而会导致在开发中作为程序员由于安装不同的数据库驱动而浪费很多时间,同时和数据库交互的java代码也得重新书写,这样都会导致效率很低。所以说,sun公司就会制定一套规则,这套规则就是用来java程序连接数据库的,然后各大数据库厂商只需要实现这个规则即可。这个规则就是jdbc技术,即接口。

换句话就是说,就是数据库厂商使用sun公司提供的接口,然后作为java程序员实现接口中的方法即可。接口中的方法体由具体的数据库厂商来实现。

在这里插入图片描述


JDBC的好处

  1. 我们只需要会调用JDBC接口中的方法即可,使用简单
  2. JDBC有关的类和接口:都在java.sql 和 javax.sql(扩展包) 包下
  3. 方法体由具体的数据库厂商来完成的
  4. 使用同一套Java代码,进行少量的修改就可以访问其他JDBC支持的数据库

JDBC核心API的介绍

JDBC会用到的包

  1. java.sql:JDBC访问数据库的基础包,在JavaSE中的包。如:java.sql.Connection
  2. javax.sql: JDBC访问数据库的扩展包
  3. 数据库的驱动,各大数据库厂商来实现。如:MySQL的驱动:com.mysql.jdbc.Driver

JDBC四个核心对象

这几个类都是在 java.sql 包中

  1. DriverManager(类): 数据库驱动管理类。这个类的作用:1)注册驱动; 2)创建java代码和数据库之间的连接,即获取Connection接口;
  2. Connection(接口): 是一个接口, 建立数据库连接的一个接口。作用:建立数据库和java代码之间的连接。表示与数据库创建的连接
  3. Statement(接口)、PreparedStatement(接口) (解决安全隐患问题,比如sql注入的问题): 数据库操作,向数据库发送sql语句。执行SQL语句的对象
  4. ResultSet: 结果集或一张虚拟表。 Statement 发送sql语句,得到的结果 封装在 ResultSet 中。

在这里插入图片描述

JDBC访问数据库的步骤

  1. 由DriverManager注册驱动程序

  2. 创建和数据库的连接对象Connection

  3. 由客户端发送SQL语句给服务器执行,SQL语句封装成Statement对象

  4. 查询到的结果集封装成ResultSet对象

  5. 在客户端可以从ResultSet中取出数据,处理结果集

  6. 释放资源,关闭连接对象





http://www.lryc.cn/news/438425.html

相关文章:

  • Go语言现代web开发07 map字典
  • AI工具一键制作爆火的“汉语新解“卡片!
  • windows检查端口占用并关闭应用
  • 机器学习-聚类算法
  • keil 中 printf重定向
  • yum下载软件失败:‘Could not resolve host: mirrorlist .centos .org; Unknowm error
  • 云轴科技ZStack 获鲲鹏应用创新大赛2024上海赛区决赛一等奖
  • 沉浸式体验Stability AI最新超强AI图片生成模型Ultra
  • 网络安全宣传周的时间,举办活动的方式和意义
  • Jacoco的XML报告详解
  • 【数据结构与算法 | 灵神题单 | 合并链表篇】力扣2, 21, 445, 2816
  • 【秒达开源】多功能中文工具箱源码:自部署 全开源 轻量级跨平台 GPT级支持+高效UI+Docker
  • 【云原生安全篇】一文掌握Harbor集成Trivy应用实践
  • 计算机网络30——Linux-gdb调试命令makefile
  • 【物联网】一篇文章带你认识RFID(射频识别技术)
  • STM32G474RE之RTC
  • TwinCAT3 实时核中ADS实现C++ server、clinet数据传输
  • apt:Debian 高级包管理器
  • 基于React+JsonServer+Antddesign的读书笔记关联系统
  • 【win工具】win安装flameshot并设置截图快捷键
  • react 安装使用 antd+国际化+定制化主题+样式兼容
  • 【Kubernetes】常见面试题汇总(十六)
  • 【mysql】mysql之优化
  • Django REST framework 实现缓存机制以优化性能
  • 快速了解高并发解决方案
  • SpringBoot框架下的房产销售系统设计与实现
  • 基于RFID的门禁系统的设计(论文+源码)
  • 湖仓一体-Paimon篇-简介
  • React Native 0.76版本发布
  • yolo自动化项目实例解析(一)日志格式输出、并发异步多线程、websocket、循环截图、yolo推理、3d寻路