JDBC(数据库连接)

2023-10-30

JDBC

简介

什么是 JDBC?

JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。

JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法。

  • 制作到数据库的连接。

  • 创建 SQL 或 MySQL 语句。

  • 执行 SQL 或 MySQL 查询数据库。

  • 查看和修改所产生的记录。

从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件,例如:

  • Java 应用程序

  • Java Applets

  • Java Servlets

  • Java ServerPages (JSPs)

  • Enterprise JavaBeans (EJBs)

所有这些不同的可执行文件就可以使用 JDBC 驱动程序来访问数据库,这样可以方便的访问数据。

JDBC 具有 ODBC 一样的性能,允许 Java 程序包含与数据库无关的代码。

JDBC 架构

JDBC 的 API 支持两层和三层处理模式进行数据库访问,但一般的 JDBC 架构由两层处理模式组成:

  • JDBC API: 提供了应用程序对 JDBC 管理器的连接。

  • JDBC Driver API: 提供了 JDBC 管理器对驱动程序连接。

JDBC API 使用驱动程序管理器和数据库特定的驱动程序来提供异构(heterogeneous)数据库的透明连接。

JDBC 驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。

以下是结构图,其中显示了驱动程序管理器相对于在 JDBC 驱动程序和 Java 应用程序所处的位置。

img

常见的 JDBC 组件

JDBC 的 API 提供了以下接口和类:

DriverManager :这个类管理一系列数据库驱动程序。匹配连接使用通信子协议从 JAVA 应用程序中请求合适的数据库驱动程序。识别 JDBC 下某个子协议的第一驱动程序将被用于建立数据库连接。

Driver : 这个接口处理与数据库服务器的通信。你将很少直接与驱动程序互动。相反,你使用 DriverManager 中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。

Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,即,所有与数据库的通信仅通过这个连接对象进行。

Statement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。除了执行存储过程以外,一些派生的接口也接受参数。

ResultSet : 在你使用语句对象执行 SQL 查询后,这些对象保存从数据获得的数据。它作为一个迭代器,让您可以通过它的数据来移动。

SQLException : 这个类处理发生在数据库应用程序的任何错误。

JDBC 4.0 软件包

JDBC 4.0 主要包含 java.sql 包和 javax.sql 包,在编写这本教程的时候这是 JDBC 最新的版本。它提供的主要类与数据源进行交互。

在这些包中的新功能包括改变在以下几个方面:

  • 自动数据库驱动程序加载

  • 异常处理的改进

  • 增强的 BLOB/CLOB 功能

  • 增强的连接和语句界面

  • 国家字符集支持

  • SQL ROWID 访问

  • SQL 2003 XML 数据类型支持

  • 注释

SQL语法

结构化查询语言(SQL)是一种标准化的语言,它可以让你对数据库进行操作,如创建项目,读取内容,更新内容和删除项目。

SQL 支持你可能会使用到的任何数据库,它可以让你编写独立于底层数据库的数据库代码。

本章介绍了 SQL,这是一个了解 JDBC 概念的先决条件。在经历了这一章后,你将能够创建,读取,更新和删除(通常被称为 CRUD 操作)一个数据库中的数据。

为了详细理解 SQL,你可以阅读我们的 MySQL 教程

创建数据库

CREATE DATABASE 语句用于创建一个新的数据库。语法是 -

SQL> CREATE DATABASE DATABASE_NAME;

示例

下面的 SQL 语句创建一个名为 EMP 的数据库 -

SQL> CREATE DATABASE EMP;

删除数据库

使用 DROP DATABASE 语句用于删除现有的数据库。语法是 -

SQL> DROP DATABASE DATABASE_NAME;

注意:要创建或删除数据库,你必须有数据库服务器的管理员权限。请注意,删除数据库会把存储在该数据库中的数据一并删除。

创建表

CREATE TABLE 语句用于创建新表。语法是 -

SQL> CREATE TABLE TABLE_NAME
(
   COLUMN_NAME column_data_type,
   COLUMN_NAME column_data_type,
   COLUMN_NAME column_data_type
   ...
);

示例

下面的 SQL 语句创建一个含有四列名为 Employees 的表 -

SQL> CREATE TABLE Employees
(
   id INT NOT NULL,
   age INT NOT NULL,
   first VARCHAR(255),
   last VARCHAR(255),
   PRIMARY KEY ( id )
);

删除表

DROP TABLE 语句用于删除现有的表。语法是 -

SQL> DROP TABLE table_name;

示例

下面的 SQL 语句删除名为 Employees 的表 -

SQL> DROP TABLE Employees;

INSERT 数据

INSERT 的语法如下所示,其中 column1,column2 等数据出现在相应的列中 -

SQL> INSERT INTO table_name的VALUES(column1,column2,...);

示例

下面的 SQL INSERT 语句将在前面创建的 Employees 数据库中插入新的一行数据 -

SQL> INSERT INTO Employees VALUES(100,18,'Zara','Ali');

SELECT 数据

SELECT 语句用于从数据库中检索数据。SELECT 的语法 -

SQL> SELECT column_name, column_name, ...
     FROM table_name
     WHERE conditions;

WHERE 子句可以使用 =,!=,<,>,<=,>=,BETWEEN 和 LIKE 这些比较操作符。

示例

下面的 SQL 语句从 Employees 表中选出 ID 列是100的年龄、第一列、最后一列这些信息

SQL> SELECT first, last, age FROM Employees WHERE id = 100;

下面的 SQL 语句从 Employees 表中选出第一列包含 Zara 字符的年龄、第一列、最后一列这些信息

SQL> SELECT first, last, age FROM Employees WHERE first LIKE '%Zara%';

UPDATE 数据

UPDATE 语句用于更新数据。UPDATE 的语法 -

SQL> UPDATE table_name
     SET column_name = value, column_name = value, ...
     WHERE conditions;

WHERE 子句可以使用=,!=,<,>,<=,>=,BETWEEN 和 LIKE 这些比较操作符。

示例

下面的 SQL UPDATE 语句改变了 ID 是100的员工的age列的数据 -

SQL> UPDATE Employees SET age=20 WHERE id=100;

DELETE 数据

DELETE 语句用于从表中删除数据。DELETE 的语法-

SQL> DELETE FROM table_name WHERE conditions;

WHERE 子句可以使用=,!=,<,>,<=,>=,BETWEEN 和 LIKE 这些比较操作符。

示例

下面的 SQL DELETE 语句将 Employees 表中 ID 是100的记录删除-

SQL> DELETE FROM Employees WHERE id=100;

《-个人笔记-》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC(数据库连接) 的相关文章

随机推荐

  • 调试最长的一帧(第七天)

    先看看总体进展 eventTraversal函数的任务 在每帧仿真过程中 取出已经发生的所有事件 摒弃哪些对场景不会有助益的 比如 在视口外的鼠标事件 依次交付给各个事件处理器 最后清空现有的事件队列 等待下一帧的到来 在View的几个成员
  • list中的sort()方法

    def sort self key None reverse False real signature unknown restored from doc L sort key None reverse False gt None stab
  • Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案

    目录 一 缓存穿透 解决方案 二 缓存雪崩 解决方案 三 缓存击穿 解决方案 在生产环境中 会因为很多的原因造成访问请求绕过了缓存 都需要访问数据库持久层 虽然对Redsi缓存服务器不会造成影响 但是数据库的负载就会增大 使缓存的作用降低
  • 第十届蓝桥杯C++B组题解

    国赛题确实不简单哇hhh 前6题没有太大难度 第7题DP分类讨论实在是太多了 完全可以当压轴来出了呜呜呜 第8题运气好的话还是能做出来的hhh 这种题往往都不难都是找规律 第9题线段树的运用 但是很暴力很暴力 也算是一个积累叭 第10题直接
  • 若依系统结合微信小程序实现sys-user表中的user用户登录

    后台一点都不用改 只需要在微信开发者工具里改前端 登录时账号为admin 密码为admin123 login接口和captchaImage接口都是若依封装好的 不用动 只适用于sys user表中的user用户登录 wxml里这么写
  • 2023中国第三方支付市场专题分析

    导读 本分析内容旨在对第三方支付行业进行深入分析 内容包括市场政策 技术 投融资等环境分析 产业发展现状分析 案例解读 市场趋势洞察等 对跨境电商 数字人民币支付等典型场景服务模式创新逐一具体论述 关注公众号 互联互通社区 回复 CYFX2
  • springboot配置json数据序列化工具类

    一 概述 public class FastJsonUtils private static final SerializeConfig config static config new SerializeConfig config put
  • .vcxproj : error : 文件 E:\work\ImageManageSys\images\boat.png 包含在 None 和 None 项组中。项目项不允许这样做,它只能属于一个项

    Qt系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 文章目录 Qt系列文章目录 前言 一 问题原因 二 解决方法 前言 使用visual stdi
  • android自定义弹出框样式实现

    前言 做项目时 感觉android自带的弹出框样式比较丑 很多应用都是自己做的弹出框 这里也试着自己做了一个 废话不说先上图片 实现机制 1 先自定义一个弹出框的样式 2 自己实现CustomDialog类 继承自Dialog 实现里面方法
  • Java多线程中join方法的理解

    thread Join把指定的线程加入到当前线程 可以将两个交替执行的线程合并为顺序执行的线程 比如在线程B中调用了线程A的Join 方法 直到线程A执行完毕后 才会继续执行线程B t join 使调用线程 t 在此之前执行完毕 t joi
  • 布尔盲注之sqlmap爆破

    布尔盲注之sqlmap爆破 好久没有更新了 语句也忘的差不多了 作为菜鸟的我也是终于弄懂了这道题 以及部分语句的意思 我将用尽可能详细且易理解的语言来表达 sqlmap爆破 首先你得下载sqlmap csdn中刚好有 注入语句 python
  • 图片像素、英寸、厘米之间的单位换算

    转自 http hi baidu com cjg501 blog item f040fc0898d5379f0b7b8244 html 今天朋友用photoshop处理图片时要把图片保存指定的大小 但她只对厘米要形像感 可是在软件里保存的图
  • Maven+Idea打jar包个人总结

    Maven Idea打jar包个人总结 文章目录 Maven Idea打jar包个人总结 1 前言 2 安装配置JDK 3 Maven安装和配置 3 1 下载安装maven 3 2 配置环境变量 3 3 修改maven配置文件并创建本地仓库
  • BigDecimal除法向上取整,保留 1 为小数(Java、MySQL各自写法)

    SQL写法 CEILING SUM hdd SEND OUT QTY hsl DEMAND QTY 1000 10 EXECUTE RATE Java写法 updateData getExecuteQty divide soLineQtyM
  • 阿里云实践 - HTML5断点播放m3u8视频(videojs)

    场景 HTML5页面需要通过
  • EMC问题之RE实验最优解

    EMC问题之RE实验最优解 RE实验中 最关键的可能也是最难的就是找到干扰源 进而确定是传导辐射还是空间辐射 选择对应的是一定要加屏蔽罩 哪怕环路面积很小 辐射能量还是很强 还是仅仅依靠滤波等就能解决问题 实验现象 在160MHz 80MH
  • shell中如何进行一段代码的注释

    在shell编程中 我们常常需要把一些语句注释掉 让它不执行 对单号或者少数几行shell脚本来说 在每行前面增加 符号就可以达到目的了 代码如下 cp a txt b txt mkdir p 1 2 4 2 4 6 echo ok 但如果
  • ARP欺骗和DNS劫持以及Wireshark分析

    一 实验目的 利用ettercap进行中间人攻击之ARP欺骗和DNS劫持 用Wireshark分析相关特征数据 提高对ettercap Wireshark的熟练度 同时也对中间人攻击有更加深入的认识 二 实验原理 常见的ARP欺骗方式有两种
  • 使用conda时出现Solving environment: failed with initial frozen solve. Retrying with flexible solve错误

    使用conda安装pytorch 出现了各种各样的错误 尝试了网上各种办法 最后我是这么解决的 首先添加镜像源 在终端运行以下代码 conda config add channels https mirrors tuna tsinghua
  • JDBC(数据库连接)

    JDBC 简介 什么是 JDBC JDBC 指 Java 数据库连接 是一种标准Java应用编程接口 JAVA API 用来连接 Java 编程语言和广泛的数据库 JDBC API 库包含下面提到的每个任务 都是与数据库相关的常用用法 制作