JDBC数据库连接

JDBC(Java DataBase Connectivity)就是用Java语言操作关系型数据库的一套API

JDBC的步骤固定,大体分为8个步骤,以MySQL数据库为例

1.创建工程并导入驱动jar包

2.注册驱动

注册驱动的目的是告诉代码要执行哪一个jar包

Class.forName(com.mysql.jdbc.Driver);        //不常用,因为MySQL5之后的jar包里已经包含了,所以使用时可以省略

3.获取数据库连接

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

其中url是固定写法,为        jdbc:mysql://MySQL对应的ip:端口号/对应的数据库

例如                                     jdbc:mysql:127.0.0.1:3306/db1

4.定义SQL语句

String sql = " ";   

5.获取执行SQL语句的对象

Statement stmt = conn.createStatement();

6.执行SQL语句

int count = stmt.executeUpdate();  stmt.executeQuery();

//count是执行SQL语句所受影响的行数

7.处理返回结果

8.释放资源

stmt.close();

conn.close();

使用JDBC时要使用大量的API,其中有DriverManager,Connection,Statement,ResultSet,

PreparedStatement。

1.DriverManager驱动管理类,主要用于 注册驱动 和 获取数据库连接。

2.Connection可以获取执行SQL的对象,还可以管理事务

SQL注入就是通过操作输入,用字符串拼接来修改事先定义好的SQL语句,用来达到执行代码攻击服务器的效果

用异常处理机制来对事务进行管理。

3.Statement用来执行SQL语句

4.ResultSet结果集对象,封装了DQL查询语句的结果,因为是结果集,所以获取查询结果时,需要循环依次获取。

while(result.next()){

        result.getXxx(参数);

}

5.PreparedStatement继承自Statement,也就可以执行SQL语句,但可以预防SQL注入,即用问号替代参数

定义了PreparedStatement后就不用定义Statement了,而且因为使用预编译对象获取连接时,因为传入了SQL语句,后期执行时便不需要再次传入SQL作为参数了。因为使用问号作为占位符,则每次执行的SQL语句模板都一样,只需要检查,编译一次,因此速度更快

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

数据库连接池

有了连接池,就不用DriverManager来获取数据库连接了。

使用步骤:导入jar包,定义配置文件,加载load配置文件,获取数据库连接池对象,获取连接

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

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

相关文章

【并发编程】活锁

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 活锁 定义:活锁出现在两个线程互相改变对象的结束条件,最后谁也无法结束 代码示例 public class TestLiveLock {stati…

LabVIEW准分子激光器控制系统

LabVIEW准分子激光器控制系统是为了实现准分子激光光源在工业、医疗和科研领域的应用集成及其功能的扩展。系统由PC端和激光器端两部分构成,通过光隔离的RS232通讯连接,以实现稳定可靠的控制与通信。 系统主要由微控制单元(MCU)主…

SpringBoot实现自定义异常+全局异常统一处理

目录 前言 一、使用教程 1.自定义异常类。 2.全局统一处理类 3.ResultVO类 4.StatusCodeEnum 枚举类 二、 结束语 前言 在SpringBoot中,实现自定义异常和全局异常统一处理是确保应用程序稳定性和用户体验的关键。通过定义自定义异常类,我们可以为应…

数据库(MySQL的备份和恢复)

目录 1.1 MySQL 日志管理 1.1.1 MySQL日志类型 1.1.2 错误日志 错误日志中主要记录的几种日志 错误日志的定义 1.1.3 通用查询日志 1.1.4 慢查询日志 和慢查询相关的变量设置 1.1.5 二进制日志 二进制日志是记录执行的语句还是执行后的数据 日志滚动 1.2 MySQL备份…

前端echarts图形报表常见的样式配置

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🐕1.深色主题🐕2.改变柱状图颜色🐕突然发现去问ai,更容易理解,那就不总结了 🐒个人主页 🏅…

scratch——运动积木

一、运动积木概念 在Scratch编程中,运动积木是至关重要的一类积木,它能使我们的角色动起来!运动积木是创造动感项目的关键。 二、运动积木的位置 点击左上角的“代码”按钮,然后在界面最左边找到“运动”按钮,这个按…

uniapp复选框 实现排他选项

选择了排他选项之后 复选框其他选项不可以选择 <view class"reportData" v-for"(val, index) in obj" :key"index"> <view v-if"val.type 3" ><u-checkbox-group v-model"optionValue" placement"colu…

数据结构顺序表力扣例题AC——代码以及思路记录

顺序表力扣例题 27.移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不…

arm 汇编调用C

arm64 汇编调用C函数 main.s .section .text .globl main main:stp x29, x30, [sp, -16]! //store fp x29 lr x30mov x0, #0mov x1, #1bl addmov x1, x0 // x0 return ldp x29, x30, [sp], 16 //restore fp lrretadd.c #include <stdio.h> int add(int a, int…

go使用docker sdk停止和删除docker

go使用docker sdk停止和删除docker 代码参考 代码 package mainimport ("context""fmt""github.com/docker/cli/cli/connhelper""github.com/docker/docker/api/types/container""github.com/docker/docker/client""n…

性能优化-HVX 指令介绍

「发表于知乎专栏《移动端算法优化》」 本文主要介绍了 HVX 指令相关的知识&#xff0c;包括 HVX 寄存器相关内容&#xff0c;指令的背景依赖&#xff0c;部分常用 intrinsic HVX 指令。具体指令的详细内容及使用还需阅读 HVX 的指令文档&#xff0c;以及细致的实践操作。 &…

【node】关于npm、yarn、npx的区别与使用

文章目录 npm (Node Package Manager):安装依赖运行脚本 npx:执行项目依赖中的命令 yarn:安装依赖eg.使用npx yarn install 的作用 npm (Node Package Manager): 用途&#xff1a; npm 是 Node.js 官方提供的包管理工具&#xff0c;用于安装、管理和分享 JavaScript 代码包。安…

C语言—fopen和ab+

在C语言中&#xff0c;fopen(“data”,“ab”) 是使用 fopen 函数以追加和读写模式打开一个名为 “data” 的文件的方法。 下面是对这个函数调用的各个部分的解释&#xff1a; fopen 函数 fopen 是一个标准库函数&#xff0c;用于打开文件。它的原型定义在 <stdio.h> 头…

库函数的模拟实现

目录 模拟实现strlen 模拟实现strcpy 模拟实现strcmp 模拟实现strcat 模拟实现strstr 模拟实现memcpy 模拟实现memmove 模拟实现strlen #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int MyStrlen(char* str) {int len 0;while (str[len] ! \0)len;retu…

GitLab升级版本(任意用户密码重置漏洞CVE-2023-7028)

目录 前言漏洞分析影响范围查看自己的GitLab版本升级路程 升级过程13.1.1113.8.8 - 14.0.1214.3.614.9.5 - 16.1.6 前言 最近GitLab发了个紧急漏洞需要修复&#xff0c;ok接到命令立刻着手开始修复&#xff0c;在修复之前先大概了解一下这个漏洞是什么东西 漏洞分析 1、组件…

单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」

关于其他前端常见登录实现单点登录方案&#xff0c;请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录&#xff08;SSO&#xff09;&#xff0c;英文全称为 Single Sign On。 SSO 是指在多个应用系统中&#xff0c;用户只需要登录一次&#xff0c;就可以访问所有相互…

redis-持久化-1

Redis 提供了2个不同形式的持久化方式。 RDB&#xff08;Redis DataBase&#xff09; AOF&#xff08;Append Of File&#xff09; 一、Redis持久化之RDB 1.什么是RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘&#xff0c; 也就是行话讲的Snapshot快照&#xff0c…

puppeteer实现截图

Window服务器说明 1.在本地安装 puppeteer 先创建一个本地文件夹puppeteer&#xff0c;我的地址D:\common_workspace\puppeteer 然后使用cmd打开这个文件夹所在位置&#xff0c;再执行如下两条命令即可。 npm install -g cnpm --registryhttps://registry.npm.taobao.orgcnpm …

剖析EasyExcel导入出现 The index of ‘xx‘ and ‘xx‘ must be inconsistent 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 在导出Excel的时候,出现如下问题: com.alibaba.excel.exception.ExcelCommonException: The index of tyreNumber and remark must be inconsistentat com.alibaba.exce

为什么需要数据仓库

为什么不在OLTP环境下分析&#xff1f; OLTP环境也会存储历史数据&#xff0c;但这些历史数据并不是业务运行所需的&#xff0c;这些历史数据需要经常归档到数据仓库&#xff0c;并且在OLTP数据库中删除。 相比之下&#xff0c;事务环境适用于连续处理事务&#xff0c;通常应…