JDBC(Java Database Connection) 教程

JDBC快速入门 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。通俗易懂说:jdbc就是java操作数据库jdbc的本质就是:java官方提供的一套规范接口,用于帮助程序员开发者操作不同的关系型数据库(mysql/Oracle/SQLServer) 阅读详情

什么是JDBC?

  • JDBC为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。是java程序与数据库系统通信的标准API。JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作。
  • sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库,因此,sun公司决定,自己提供一套API,凡事数据库想与java进行连接的,数据库厂商自己必须实现JDBC这套接口。而数据库厂商的JDBC实现,我们就叫他此数据库的数据库驱动。

JDBC访问数据库流程

这里写图片描述

JDBC常用接口

Driver接口

  • Driver接口由数据库厂商提供,对于java开发者而言,只需要使用Driver接口就可以了。
  • 在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库由不同的装载方法。
  • 驱动:就是各个数据库厂商实现的Sun公司提出的JDBC接口。即对Connection等接口的实现类的jar文件
  • 装载MySQL驱动
    • Class.forName("com.mysql.jdbc.Driver")
  • 装载Oracle驱动
    • Class.forName("oracle.jdbc.driver.OracleDriver")

Connection接口

  • Connection与特定的数据库连接(会话),在连接上下文中执行SQL语句并返回结果。
  • DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上
  • 连接MySQL数据库:
    • Connection con = DriverManager.getConnection("jdbc:mysql://host:port:database","user","password")
  • 连接Oracle数据库
    • Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database","user","password")

Statement接口

  • 用于执行静态SQL语句并返回他所生成结果的对象。
  • 三种Statement类
    • Statement:由createStatement创建,用于发送简单的SQL语句。(不带参数的)
    • PreparedStatement:继承自Statement接口,由prepareStatement创建,用于发送含有一个或多个输入参数的SQL语句。PrepareStatement对象比Statement对象的效率更高,并且可以防止SQL注入。我们一般都用PreparedStatement。
    • CallableStatement:继承自PreparedStatement,由方法prePareCall创建,用于调用存储过程。
  • 常用的Statement方法:
    • execute():运行语句,返回是否由结果集
    • excuteQuery():运行select语句,返回ResultSet结果集。
    • executeUpdate():运行insert,update,delete操作,返回更新的行数。

ResultSet接口

  • Statement执行SQL语句时返回Result Set结果集。
  • ResultSet提供的检索不同类型字段的方法,常用的有:
    • getString():获得在数据库里是archer、char等数据类型的对象
    • getFloat():获得在数据库里是Float类型的对象。
    • getDate():获得在数据库里是Date类型的数据。
    • getBoolean():获得在数据库里面是Boolean类型的数据。

依次关闭使用之对象及连接

  • ResultSet➡️Statement➡️Connection

JDBC详细操作

  • 灵活指定SQL语句中的变量:PreparedStatement
  • 对存储过程进行调用:CallableStatement
  • 运用事务处理:Transaction
  • 批处理
    • Batch
    • 对于大量的批处理,建议使用Statement,因为PreparedStatement的预编译空间有限,当数据量特别大的时候,会发生异常。

事务

事务基本概念

  • 一组要么同时执行成功,要么同时执行失败的SQL语句。是数据库操作的一个执行单元!
  • 事务开始于:
    • 连接到数据库上,并执行一条DML语句(INSERT、UPDATE或DELETE)。
    • 前一个事务结束后,又输入了一条DML语句
  • 事务结束于:
    • 执行COMMIT或ROLLBACK语句。
    • 执行一条DDL语句,例如CREATE TABLE语句;这种情况下会自动执行COMMIT语句。
    • 执行了一条DCL语句,例如GRANT语句;这种情况下会自动执行COMMIT语句。
    • 断开与数据库的连接。
    • 执行了一条DML语句,该语句却失败了;这种情况下会自动执行COMMIT语句。

事务的四大特点(ACID)

  • Atomicity(原子性):表示一个事务内所有的操作是一个整体,要么全部成功,要么全部失败。
  • Consistency(一致性):表示一个事务内又一个操作失败时,所有的更改过的数据必须都回滚到修改之前的状态。
  • Isolation(隔离性):事务查看数据所处的状态,要么是另一个并发事务修改它之前的状态,要么是另一事务修改后的状态,事务不会查看中间状态的数据
  • Durability(持久性):事务完成后,它对于系统的修改时永久性的。

事务隔离级别的从低到高

  • 读取未提交(Read Uncommitted)
  • 读取已提交(Read Committed)
  • 可重复读(Repeatable Read)
  • 序列化(Serializable)

时间类型

  • java.util.Date
    • 子类:java.sql.Date 表示年月日
    • 子类:java.sql.Time 表示时分秒
    • 子类:java.sql.Timestamp 表示年月日时分秒
  • 日期处理比较
    • 随机插入日期
    • 取出指定日期范围内的记录

CLOB

  • CLOB(Character Large Object)
    • 由于存储大量的文本数据
    • 大字段有些特殊,不同的数据库处理方式不同,大字段操作通常是以流的方式来处理的。而非一般的字段,一次即可读出数据。
  • MySQL中相关类型:
    • TINYTEXT最大长度为 255(2^[8]-1)字符的TEXT列。
    • TEXT最大长度为 65,5353(2^[16]-1)字符的TEXT列。
    • MEDIUMTEXT最大长度为 16,777,215(2^[24]-1)字符的TEXT列。
    • LONGTEXT最大长度为4,294,967,295或者4GB(2^[32]-1)字符的TEXT列。

BLOB

  • BLOB(Binary Large Object)
    • 由于存储大量的二进制数据
    • 大字段有些特殊,不同的数据库处理方式不同,大字段操作通常是以流的方式来处理的。而非一般的字段,一次即可读出数据。
  • MySQL中相关类型:
    • TINYTBLOB最大长度为 255(2^[8]-1)字符的TEXT列。
    • BLOB最大长度为 65,5353(2^[16]-1)字符的TEXT列。
    • MEDIUMBLOB最大长度为 16,777,215(2^[24]-1)字符的TEXT列。
    • LONGBLOB最大长度为4,294,967,295或者4GB(2^[32]-1)字符的TEXT列。

ORM 基本思想

  • ORM(Object Relationship Mapping)的基本思想
    • 表结构跟类对应;表中字段和类的属性对应;表中记录和对象对应;
    • 让javabean的属性名和类型尽量和数据库保持一致!
    • 一条记录对应一个对象。将这些查询到的对象放到容器中(List,Set,Map)
  • 将表中的一条记录封装到Object中
  • 将表中的一条记录封装到map中
  • 将表中的一条记录封装到javabean中
Ardupilot环境搭建 Ardpilot介绍:ArduPilot通过多种传感器的数据(GPS、加速度计、气压计、磁场计)等来估计飞行器的姿态,从而使飞行器能够保持稳定。 阅读详情

相关推荐

别再调参了!用Simulink手把手教你搞定FOC电机速度环PI控制器(附模型下载)

本文详细介绍了如何使用Simulink搭建FOC电机速度环PI控制器,通过模最优准则和系统化调试方法,避免传统手动调参的繁琐过程。文章包含从传递函数推导到参数自动整定的完整流程,并提供了实战调试技巧与异常处理指南,帮助工程师快速实现电机控制系统的稳定运行。

weixin_42519985的博客 413

DatabaseFactory.CreateDatabase 方法操作数据库

using Microsoft.Practices.EnterpriseLibrary.Data;using Microsoft.Practices.EnterpriseLibrary.Data.Sql;   string sql = "";  //程序启动的时候   Database db = DatabaseFactory.CreateDatabase();   DbCommand ...

weixin_34221775的博客 2169

ControlRig蓝图节点对应代码(自用)

用于通过python生成ControlRig蓝图节点,非完整

dicha9的博客 425

JDBC用ConnectionFactory创建数据库连接

数据库准备 一、创建jdbcinfo.properties配置文件 可以在文件内输入不同的数据库配置数据,这里以Sqlite数据为例 sqlite.driver=org.sqlite.JDBC sqlite.url=jdbc:sqlite:E:/SQLite3/StudentManageSystem.db sqlite.user= sqlite.password=

cjx913的博客 2696

【生信】全基因组测序(WGS)

1、全基因组测序(WGS) 的定义 2、GWS流程 2.1准备工作——分析软件 2.2原始数据质控 2.3数据预处理 2.4变异检测

weixin_40695088的博客 4万+

STM32硬件SPI驱动ADS1220实战:从零搭建高精度数据采集系统(附避坑指南)

本文详细介绍了使用STM32硬件SPI驱动24位高精度ADC芯片ADS1220的完整实战方案。内容涵盖从硬件设计、CubeMX工程配置、SPI通信底层实现到数据读取策略与性能优化的全流程,并重点分享了多通道切换、噪声抑制等关键避坑指南,帮助开发者构建稳定可靠的高精度数据采集系统。

o4p5q6r7s的博客 449

使用微软企业库连接数据库时,对数据库连接字符串进行加密,多种数据库皆可行

微软企业库是开源的,原本是无法对数据库配置的连接字符串进行加密的,但是既然是开源的那就把源码下载下来,想怎么改就怎么改,比如说我这种改法,把Database类的ConnectionString由只读变为可写,那么便可如下方代码一样,对数据库的加密连接字符串进行解密了: using Microsoft.Practices.EnterpriseLibrary.Common.Configuratio...

Learn_change_myself的博客 1111

指纹浏览器指纹工厂(下):基于真实设备数据特征的马尔可夫链生成与校验

本文揭示了静态指纹生成算法在高级风控时序追踪下的致命缺陷,指出违背设备演进马尔可夫性质(如无状态跳跃、因果断裂)是导致指纹存活率骤降的核心原因。通过分析风控系统的时序状态机与多维特征验证机制,提出基于隐马尔可夫模型(HMM)的动态指纹架构:以真实设备的状态转移链为蓝本,构建异步演进的“数字基因熔炉”,通过非均匀时间步长、突发事件响应及微观因果绑定,模拟软硬件独立更新的物理法则。最终实现指纹在时间维度与微观特征上的自洽,规避风控的时序陷阱。

数据知道的博客 416

【Java 进阶篇】JDBC Connection详解:连接到数据库的关键

Connection是JDBC中的一个接口,它代表着与数据库的物理连接。它允许您与数据库建立通信,发送SQL语句,并获取查询结果。连接到数据库是执行各种数据库操作的第一步,因此了解如何创建和使用Connection对象非常重要。Connection对象是JDBC中连接数据库的关键。通过了解如何创建、关闭连接,以及如何使用连接池,您可以更好地管理数据库连接,提高应用程序的性能和可维护性。同时,良好的异常处理和事务管理也是编写健壮数据库应用的重要因素。

繁依Fanyi的博客 9585

RK3568笔记五十四:SORT实时目标追踪

YOLOv5具备目标检测的功能,把视频分解成多幅图像并逐帧执行时,如果视频帧中有多个目标,如何知道一帧中的目标和上一帧是同一个对象就是目标跟踪的工作。DeepSort是实现目标跟踪的算法,从sort(simple online and realtime tracking)演变而来,使用卡尔曼滤波器预测所检测对象的运动轨迹,匈牙利算法将它们与新的检测目标相匹配。结合YOLOv5和DeepSORT可以在实时场景中实现高效的目标检测和跟踪。

788

Ut接口原理及 VoLTE 补充业务自管理信令流程(GBA 引导认证+业务访问认证+ VoLTE 补充业务自管理)

2. Ut 接口及 VoLTE 业务子管理概述 2.1 UT 接口 —— VoLTE 终端补充业务配置 2.2终端通过 Ut 接口完成 VoLTE 补充业务自管理举例 2.3什么是 GBA 和 GAA 架构 2.4为什么要引入 GBA 架构认证及 BSF 网元 2.5UE(终端) 接口相关网元及功能 2.6GBA 架构流程概述 3. Ut 接口业务自管理信令流程 3.1 补充业务自管理及本文主要参考以下规范 3.2 Ut 接口业务自管理信令流程:查询补充业务 3.2.1 UE获

原来45的博客 1256

JDBC:Java DataBase Connection

java数据库连接技术的简称,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。不同数据库有不同的驱动包,相关的链接的实现类都在驱动包(链接驱动————jar包,一堆类和接口)jdk自带提供了一套接口以及一些实现类,但是不包含链接,如果想要具体的链接类必须在驱动包找——链接数据库必须提供驱动包。............

Mr_meeseeks666的博客 1606

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

算法大师! 443

JDBC中Java连接数据库进行增删改查操作出现的The url cannot be null及Could not create connection to database server. 报错

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_43530590的博客 5423

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java】JDBC 全面教程:从入门到实战

在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。执行DDL、DML语句执行DQL语句该方法涉及到了ResultSet对象,而这个对象我们还没有学习,一会再重点讲解。封装了SQL查询语句的结果。ResultSet executeQuery(sql) :执行DQL 语句,返回 ResultSet 对象那么我们就需要从ResultSet。

qq_40205510的博客 1625

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java教程:JavaWeb ---JDBC

JavaWeb-JDBC快速入门与API详解 本文介绍了JDBC(Java Database Connectivity)的基本概念和快速入门方法。JDBC是Java操作关系型数据库的标准API,由数据库厂商提供具体实现。文章包含以下核心内容: JDBC概述:解释JDBC作为Java操作数据库的统一接口,其本质是sun公司制定的标准,各数据库厂商提供驱动实现。 快速入门步骤: 导入驱动jar包 注册驱动(Class.forName) 获取连接(DriverManager) 定义和执行SQL语句 处理结果并释放

yang_xs的博客(只讲干货) 905

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

什么是JDBC?概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使用这套接口,真正执行的是jar驱动包中的实习类使用一张图让大家更为直观的理解:coder就是写这套接口的程序员JDBC的使用步骤1.导入驱动jar包2.注册驱动3.获取数据库连接对象4.定义sql执行语...

weixin_32409707的博客 225

JDBC 入门教程

Java Database Connectivity (JDBC) 是 Java 平台提供的一种与各种数据库连接的方式和规范。通过 JDBC,开发者可以在 Java 平台上完成数据库的查询、更新和操作。本文将详细认识 JDBC 的基础概念,并通过实战例子介绍其使用方法。

2301_80320652的博客 398

JDBC(Java DataBase Connectivity)

Java DataBase Connectivity 提供了访问数据库的API Java连接池数据库的规范(标准) 一些类和接口组成 Driver接口 每个驱动程序类必须实现的接口。 对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标URL; DriverManager类 用于驱动管理JDBC驱动的服务类,为了获取Connection对象,用来获得url对应数据库的连接。 Connection接口 数据库连接对象,每一个Connection代表一个物理连接会话,想要访

m0_58711648的博客 302

JDBC连接Mysql数据库

首先,来解释一下什么是JDBC,Java DataBase Connectivity,它是Java数据库连接 的缩写,它提供了一套流程用于我们在Java代码中去操作我们的数据库。其次,在JDBC中主要用到3个对象 用于获取对于数据库的连接 建立了连接之后,需要有操作SQL的对象 操作完SQL要有能够接受结果的对象相信有过工作或者实习的经验的小伙伴或有所体会,在工作的项目中使用框架来操作数据库(例如mybatis框架),写SQL都是非常方便的,但有时候领导让你写个小工具或者小脚本,难道我们还要把整个框架搭建起

小陈没烦恼 683

java原生JDBC连接mysql数据库

持久层框架盛行的年代,有时候用生jdbc连接并操作数据库也显得很有必要。本文在idea中演示用jdbc连接mysql数据。 idea中手动拉入mysq驱动jar包 jdbc操作数据库,主要流程为: (1)创建connection连接 (2)准备一条sql语句,利用PreparedStatement对sql进行预编译,获取执行sql的对象 (3)执行sql,返回结果集(本文以查询为例) (4)关闭连接 其中,第二步,获取执行sql的对象有两种方法,推荐PreparedStatement方法:因为 方法.

TAaron666的博客 1815

搞懂 JDBC 中的 DriverManager 和 Connection 一篇文章就够了

文章目录一、DriverManager 驱动管理对象二、Connection 数据库连接对象 一、DriverManager 驱动管理对象 功能:注册驱动,获取数据库连接 注册驱动:告诉程序该使用哪一个数据库驱动 jar static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 写代码使用: Class.for...

南淮北安的博客 5478

sqlite3 java 内存_java – 当jdbc与sqlite3数据库连接时,我该怎么做才能避免“内存不足”的错误?...

This表示找不到您的clients.db文件.尝试更恰当地定位该文件.向下滚动到标题为“如何指定数据库文件”的部分.我下载了sqlite JAR,将它放在我的CLASSPATH中,并发现了一个在不到五分钟内完美运行的教程here.正如预期的那样,它将test.db放在我的项目根目录中.我按照我的方式重写了那个教程.有用.不要说它什么也没带来.package sqlite;import java....

weixin_29986051的博客 149

JDBC( Java database connection)的几个步骤

JAVA访问数据库的解决方案。几个步骤:1.加载驱动类;     2.与数据库建立连接;           3.执行SQL语句       4.处理结果集     5.关闭连接1. 第一步:加载驱动类:  需要注意:不同的数据库,参照的字符串不同,ORACLE的连接为:Class.forName("oracle.jdbc.driver.OracleDriver"); 这一步执行后,程序可能会抛出...

yeqiuBOke的博客 2550

完整java开发中JDBC连接数据库代码和步骤

完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库    •创建一个以JDBC连接数据库的程序,包含7个步骤:     1、加载JDBC驱动程序:        在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),        这通过java.lang.Class类的静态方法forName(String  className

u012439887的博客 402

JDBC ORM(Object Relationship Database Mapping)

ORM=Object Relationship Database Mapping 对象和关系数据库的映射 简单说,一个对象,对应数据库里的一条记录 示例:根据id返回一个Hero对象 提供方法get(int id)返回一个Hero对象 public class Hero { //增加id属性 public int id; pub...

Jyj_0016的博客 200
上一篇: MySQL 数据库的命令行操作
下一篇: JDK高性能编程之容器
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值