JDBC的学习记录

JDBC就是使用java语言操作关系型数据库的一套API。

JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的一种标准接口。它提供了一组方法和类,使Java程序能够与各种不同类型的关系型数据库进行交互。

JDBC的主要功能包括建立数据库连接、执行SQL语句、处理查询结果、事务处理等。通过JDBC,开发人员可以使用Java程序来访问和操作数据库,而不需要直接编写特定数据库的特定代码。

JDBC的设计目标是提供一种独立于数据库的数据库访问接口,使得开发人员可以在不同的数据库系统之间切换而不需要改变程序代码。JDBC通过使用驱动程序来实现这一目标,每个数据库都需要提供一个对应的JDBC驱动程序。

使用JDBC可以实现各种数据库操作,如创建数据库、创建表、插入数据、更新数据、删除数据等。同时,JDBC还支持事务处理和批量更新等高级操作。

JDBC是Java平台的一部分,可以在Java开发环境中直接使用。目前,大多数数据库都提供了对应的JDBC驱动程序,可以很方便地与Java程序进行集成。

下面我们来一起学习以下吧!

---------------------------------------------------------------------------------------------------------------------------

为了方便大家一起动手,我把建表的代码给放进来了

CREATE table account(
id int,
name varchar(20),
money INT
);

还有表中的数据

insert into account(id,name,money) VALUES(1,'张三',1000);
insert into account(id,name,money) VALUES(2,'李四',1000); 

 建好之后就是这样啦

数据库建好了之后我们就要尝试再java中写sql语句

大体就是这样

1、首先我们得创建工程,导入驱动jar包

 

jar包导入之后,我们右键点击jar包,选择add as library

然后这个可以看情况而定了

2、注册驱动

Class.forName("com.mysql.jdbc.Driver");

3、获取链接

Connection conn = DriverManager.getConnection(url, username, password);

4、定义sql语句

String sql="updata..."; 

5、获取执行sql对象

 Statement stmt=conn.createStatement();

6、执行sql

 stmt.executeUpdate(sql);

7、处理返回结果

8、释放资源

结果如下

 

但是会有红字,idea建议我们使用比较安全的链接方式SSL,配置完会是我们的性能降低一点,所以不使用,我们可以在后面加上    ?useSSL=false

这样就没有红字了 

 

JDBC API 详解

DriverManager

DriverManager(驱动管理类)作用

1、注册驱动

Class.forName("com.mysql.jdbc.Driver");

Mysql 5之后的驱动包,可以省略注册驱动的步骤

自动加载jar包中的META-INF/services/java.sql.Driver文件中的驱动类 

2、获取数据库连接

Connection conn = DriverManager.getConnection(url, username, password);

conn我们可以自己随便取

url:连接路径

语句  jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2..

示例  jdbc:mysql://127.0.0.1:3307/db3

  • 如果连接的是本机mysql服务器的话,并且mysql服务器默认端口为3306,则url可以简写为

jdbc:mysql:///数据库名?参数键值对

  • 配置useSSL=false参数,禁用安全连接方式,解决警告提示

username:用户名

password:密码

Connection

1、获取执行sql的对象

  • 普通执行sql对象

Statement createStatement()

  • 预编译sql的执行sql对象:防止sql注入

PreparedStatement prepareStatement(sql) 

  •  执行存储过程中的对象

CallableStatement prepareCall(sql) 

 2、事务管理

  • mydql事务管理

开启事务:BEGIN;/START TRANSACTION

提交事务:COMMIT;

回滚事务:ROLLBACK;

Mysql默认自动提交事务 

  • JDBC事务管理:Connection接口中定义了三个对应的方法 

开启事务:setAutoCommit(Boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务

提交事务:commit()

回滚事务:rollback() 

try {//开启事务conn.setAutoCommit(false);//执行sqlint count1 = stmt.executeUpdate(sql1);//处理结果System.out.println(count1);//执行sqlint count2 = stmt.executeUpdate(sql2);//处理结果System.out.println(count2);//提交事务conn.commit();
} catch (Exception e) {//回滚事务conn.rollback();throw new RuntimeException(e);
}

 

Statement

  • Statement作用:执行sql语句
  • 执行sql语句

int executeUpdate(sql):执行DML、DDL语句

返回值:(1)DML语句影响的行数(2)DDL语句执行后、执行成功也可能返回0 

ResultSet executeQuery(sql):执行DQL语句

返回值:ResultSet结果集对象 

 

执行DML语句

 表中有id=1的受影响行数为1

 

表中没有id=5的数据,受影响行数为0 

 

还可以优化以下,用户想看到的是修改成功了还是失败了

id=5时是下面的结果

执行DDL语句

 

db2创建成功了

再看一下删除

返回的居然是0,但是我们删除成功了,所以这里没有使用if语句去判断成功与否

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular基础---HelloWorld---Day3

文章目录 0.ng-model 的几种不同的class属性1.ng-model 的引用与属性的调用2.表单验证: (模版引用变量、ngModel 、ngif一起使用)3.根据class属性的值ng-invalid ,设置动态变化的样式 0.ng-model 的几种不同的class属性 引用ng-model 元素的c…

分布式执行引擎ray入门--(3)Ray Train

Ray Train中包含4个部分 Training function: 包含训练模型逻辑的函数 Worker: 用来跑训练的 Scaling configuration: 配置 Trainer: 协调以上三个部分 Ray TrainPyTorch 这一块比较建议直接去官网看diff,官网色块标注的比较清晰,非常直观。 impor…

MySQL-视图:视图概述、使用视图注意点、视图是否影响基本表

视图 一、视图概述二、使用视图注意点三、视图操作是否影响基本表 一、视图概述 在数据库管理系统中,视图(View)是一种虚拟表,它并不实际存储数据,而是基于一个或多个实际表的查询结果。视图提供了一种对数据库中数据…

RabbitMQ备份交换机

1. 备份交换机 备份交换机可以理解为 RabbitMQ 中交换机的“备胎”,当我们为某一个交换机声明一个对应的备份交换机时,就是为它创建一个备胎,当交换机接收到一条不可路由消息时,将会把这条消息转发到备份交换机中,由备…

reids设计与实现(一)——数据对象

文章目录 1. 前言2. redis 动态字符串2.1. 字符串的数据结构:2.2. 剖析,length;2.3. 剖析,free;2.3. 使用c字符串函数; 3. redis 链表4. 字典5. 跳跃表 1. 前言 reids作为最常用的缓存数据库,深…

【MATLAB】MATLAB学习笔记

MATLAB入门 基础操作变量命名数据类型逻辑和流程控制循环结构分支结构 绘图基本操作二维平面绘图绘图参数三位立体绘图图像窗口的分割 本文参考B站视频:BV13D4y1Q7RS 由于我对于C语言很熟悉,很多语法是会参考C来学 基础操作 清屏%% 清空环境变量及命令 …

图腾柱PFC工作原理:一张图

视屏链接: PFC工作原理

docker学习笔记——Dockerfile

Dockerfile是一个镜像描述文件,通过Dockerfile文件可以构建一个属于自己的镜像。 如何通过Dockerfile构建自己的镜像: 在指定位置创建一个Dockerfile文件,在文件中编写Dockerfile相关语法。 构建镜像,docker build -t aa:1.0 .(指…

【每日一题】2834. 找出美丽数组的最小和-2024.3.8

题目: 2834. 找出美丽数组的最小和 给你两个正整数:n 和 target 。 如果数组 nums 满足下述条件,则称其为 美丽数组 。 nums.length n.nums 由两两互不相同的正整数组成。在范围 [0, n-1] 内,不存在 两个 不同 下标 i 和 j &…

阿里云实现两个VPC网络资源互通

背景 由于实际项目预算有限,两套环境虽然分别属于不同的专有网络即不同的VPC,但是希望借助一台运维机器实现对两个环境的监控和日常的运维操作 网络架构 如下是需要实现的外网架构图,其中希望实现UAT环境的一台windows的堡垒机可以访问生产…

第G3周:CGAN入门|生成手势图像

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、前置知识 CGAN(条件生成对抗网络)的原理是在原始GAN的基础上,为生成器和判别器提供 额外的条件信息…

【linux】04 :linix实用操作

1.常用快捷键 ctrlc表示强制停止。linux某些程序的运行,如果想强制停止,可以使用;命令输入错误,也可以通过ctrlc,退出当前输入,重新输入。 ctrld表示退出登录,比如退出root以回到普通用户,或者…

Stable Diffusion 模型下载:ZavyChromaXL(现实、魔幻)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 作者述:该模型系列应该是用于 SDXL 的 ZavyMix SD1.5 模型的延续。主要重点是获…

背包问题算法

背包问题算法 0-1背包问题二维数组一维数组 完全背包问题二维数组一维数组 多重背包问题一维数组 0-1背包问题 问题:背包的容量为9,有重量分别为[2, 4, 6, 9]的四个物品,价值分别为[3, 4, 5, 6],求背包能装的物品的最大价值是多少…

Orange3数据预处理(预处理器组件)

1.组件介绍 Orange3 提供了一系列的数据预处理工具,这些工具可以帮助用户在数据分析之前准备好数据。以下是您请求的预处理组件的详细解释: Discretize Continuous Variables(离散化连续变量): 这个组件将连续变量转…

个人网站展示(静态)

大学期间做了一个个人博客网站,纯H5编码的网站,利用php搭建了一个留言模块。 有需要源码的同学,可以联系我~ 首页: IT杂记模块 文人墨客模块 劳有所获模块 生活日志模块 关于我 一个推崇全栈开发的前端开发人员 微信: itrzzh …

elasticsearch篇

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近…

代码随想录算法训练营Day39 || leetCode 762.不同路径 || 63. 不同路径 II

62.不同路径 每一位的结果等于上方与左侧结果和 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector(n,0));for (int i 0; i < m; i) dp[i][0] 1;for (int j 0; j < n; j) dp[0][j] 1;for (int i 1; i < m; …

使用docker部署redis集群

编写脚本 批量创建目录文件&#xff0c;编写配置文件 [rootlocalhost ~]# cat redis.sh #/bin/bash for port in $(seq 1 6); do mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >>/mydata/redis/node-…

记录西门子:IO隔离SCL编程

在PLC变量中创建IO输入输出 在PLC类型中创建输入和输出&#xff0c;并将PLC变量的输入输出名称复制过来 创建一个FC块或者FB块 创建一个DB块 MAIN主程序中&#xff1a;