JDBC-笔记

JDBC

1. JDBC介绍

JDBC(Java Database Connectivity)是一种用于连接和操作数据库的 Java API。
在这里插入图片描述

通过Java操作数据库的流程
第一步:编写Java代码
第二步:Java代码将SQL发送到MySQL服务端
第三步:MySQL服务端接收到SQL语句并执行该SQL语句
第四步:将SQL语句执行的结果返回给Java代码

2. JDBC快速入门

JDBC快速入门
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package src.com.itheima.jdbc;import com.mysql.jdbc.Driver;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;//jdbc快速入门
public class JDBCDemo {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接String url = "jdbc:mysql://127.0.0.1:3306/db1";String usename = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, usename, password);//3.定义sqlString sql = "UPDATE account SET money=1500 WHERE id =2;";// 4.获取执行sql的对象statementStatement stmt = conn.createStatement();//5.执行sqlint count = stmt.executeUpdate(sql);  //受影响的行//6.处理结果System.out.println(count);//7.释放资源stmt.close();conn.close();}
}

在这里插入图片描述

案例:
https://blog.csdn.net/meini32/article/details/131981238
案例2:查询数据库中的数据

案例3:查询数据库中账户表数据,并将其封装成Account对象,,存储到ArrayList集合当中

3 JDBC-API介绍

API介绍/方法
DriverManager管理 JDBC 驱动程序的基本服务
.getConnection(String url, String user, String password):获取一个与指定数据库的连接。
Connection代表一个与特定数据库的连接
.createStatement():创建一个 Statement 对象,用于执行 SQL 语句。
Statement用于执行 SQL 语句并返回结果
.executeUpdate(String sql):执行更新语句,返回受影响的行数。
ResultSet用于处理和操作结果集数据
.next():将指针移到下一行,如果有下一行则返回 true
.getInt():获取指定列的整数值。
PreparedStatement用于执行预编译 SQL 语句的接口(可以预防sql注入)

sql注入案例:https://blog.csdn.net/meini32/article/details/132046575

4 数据库连接池

概念

数据库连接池是一种用于管理和维护数据库连接的技术

  • 在应用程序中,每次需要访问数据库时,都需要建立一个数据库连接,这个过程是比较耗时的。当并发访问量较大时,频繁地建立和关闭数据库连接会导致服务器资源的浪费和性能的降低。通过使用数据库连接池,可以将数据库连接预先建立好,并重复利用这些连接,从而减少数据库连接的建立和关闭次数,提高服务器资源的利用率和应用程序的性能。

组成

  • 连接池管理器:
    连接池管理器负责管理连接池的创建、初始化、销毁和连接的分配和回收。
  • 一组连接池:
    连接池则负责维护一组已经建立好的数据库连接
  • 应用:
    当应用程序需要访问数据库时,连接池管理器会从连接池中获取一个可用的连接,分配给应用程序使用。当应用程序不再需要连接时,连接池管理器会将连接回收到连接池中,以便下次重复利用。

优点

  1. 提高应用程序的性能:使用连接池可以减少数据库连接的建立和关闭次数,从而节省服务器资源和提高应用程序的性能。
  2. 提高系统的稳定性:连接池可以有效地控制数据库连接的数量,避免数据库连接过多导致服务器资源耗尽和系统崩溃的情况。
  3. 提高数据库的安全性:连接池可以对数据库连接进行统一管理和授权,避免应用程序直接访问数据库带来的安全风险。

数据库连接池接口:DataSource

DataSource 接口提供了一组标准的方法,用于获取和管理数据库连接,应用程序可以通过该接口来访问和使用数据库连接池。DataSource 接口的实现类可以通过第三方库或应用服务器提供,常见的实现类有DBCP、C3P0、BoneCP 等。这些实现类都实现了 DataSource 接口,并提供了一些自定义的配置选项和扩展功能。

使用步骤:

1.导入jar包 druid-1.1.12.jar
2.定义配置文件
3.加载配置文件
4.获取数据库连接池对象
5.获取连接

package src.com.itheima.jdbc.com.ithema.druid;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;public class DruidDemo {public static void main(String[] args) throws Exception {//1.导入jar包//2.定义配置文件//3.加载配置文件Properties prop = new Properties();prop.load(new FileInputStream("D:\\jdbc-demo\\src\\com\\itheima\\jdbc\\druid.properties"));//4.获取连接池对象DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);//5.获取数据库连接Connection connection = dataSource.getConnection();System.out.println(connection);System.out.println(System.getProperty("user.dir"));}
}

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

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

相关文章

Spring中IOC容器常用的接口和具体的实现类

在Spring框架没有出现之前,在Java语言中,程序员们创建对象一般都是通过关键字new来完成,那时流行一句话“万物即可new,包括女朋友”。但是这种创建对象的方式维护成本很高,而且对于类之间的相互关联关系很不友好。鉴于…

【Web】web

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层——传输层——网络层——数据链路层——物理层 每一定的台主机都有一个唯一且固定的地址标识——IP地址 IP地址的做用:1.区分用户和计算机;2.进行通信 IP地址由32位二进制数组成,…

读取application-dev.properties的中文乱码【bug】

读取application-dev.properties的中文编码【bug】 2023-7-30 22:37:46 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平台发布时删除以上此话 bug 读取application-dev.propert…

ATFX汇市月报:7月美联储坚定加息,8月成利率决议空档期

7月汇市行情回顾—— 7月份,美元指数下跌1.01%,收盘在101.88点, 欧元升值0.76%,收盘价1.0997点; 日元升值1.41%,收盘价142.27点; 英镑升值1.08%,收盘价1.2835点; 瑞…

TSINGSEE青犀视频AI算法引擎中台在渣土车智慧管控场景中的应用

一、行业背景 随着社会的发展和人们生活水平的不断进步,大家对环境卫生和空气质量的要求越来越重视。渣土车是建筑垃圾的运输主力,也存在行驶频繁、不合规、不合法的操作,可能对交通安全、环境卫生和城市形象造成影响。比如在施工工地&#x…

【C++】C/C++内存管理

1、C/C内存分布 【1】栈又叫堆栈 – 非静态局部变量/函数参数/返回值等等,栈是向下增长的。 【2】内存映射段 – 是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信 【3】堆 – 用于程序运…

Java面向对象的三大特征

Java面向对象的三大特征 java面向对象的三大特征:“封装、继承、多态”。更多Java技术知识,请登陆疯狂软件教育官网。微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵。 以本文为例&#xff0c…

百分点科技参编信通院《数据中台实践指南(1.0版)》

日前,在大数据产业发展大会上,百分点科技参与编写的《数据中台实践指南(1.0版)》正式发布,该指南由中国信息通信研究院大数据技术标准推进委员会指导和组织,百分点科技、阿里云、中国移动、中国联通、交通银…

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL: windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单,可以在Windows系统中获取Linux系统环境,并完全直连计算机硬件,无需要通过虚拟机虚拟硬件 Windows10的W…

Linux操作系统学习,Linux基础命令大全

目录 第一章、Linux简介和安装1.1)Linux简介和分类1.2)安装VMware虚拟机,在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1)什么是IP地址,如何查看2.2)虚拟机NAT模式中Linux的IP地址设置有…

selenium 遇到更新chorme驱动

打开浏览器,在地址栏输入chrome://version/便可以查看到谷歌当前的版本号 谷歌浏览器驱动的下载网址 http://chromedriver.storage.googleapis.com/index.htmlhttp://chromedriver.storage.googleapis.com/index.html 解压后把chromedriver.exe 放到python安装的目录下&am…

cURL error 1: Protocol “https“ not supported or disabled in libcurl

1、php项目composer update报错 2、curl -V检查 发现curl已经支持了https了 3、php版本检查 4、php插件检查 插件也已经含有openssl组件了 5、phpinfo检查 curl是否开启ssl 定位到问题所在,php7.4的 curl扩展不支持 https 需要重装 php7.4的curl扩展 6、curl下载 下…

刷题笔记 day4

力扣 611 有效三角形的个数 首先需要知道如何判断 三个数是否能构成三角形。 假如 存在三个数 a < b < c&#xff0c;如果要构成三角形&#xff0c;需要满足&#xff1a; ab > c ; a c > b ; b c > a ; 任意两个数大于第三个数就可构成三角形。 其实不难…

笨办法学python3进阶篇pdf,笨办法学python3pdf完整版

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;笨办法学python 3电子书下载&#xff0c;笨办法学python3pdf完整版&#xff0c;今天让我们一起来看看吧&#xff01; 1、笨方法学python习题43 按照你说的 Map是一个类&#xff0c;scene_map是一老胡镇个类实例 scene_…

自定义el-slider 滑块的样式

最近用到了element组件中的滑块&#xff0c;翻看了官网和网上一些案例&#xff0c;感觉和我要的样式都不太一样&#xff0c;下面记录一下我用到的两种自定义滑块。 效果图 第一种自定义画过的间断点样式 起始样式 滑动的样式 第二种自定义拖动滑块的样式 起始样式 滑动的样…

【递归、搜索与回溯算法练习】day2

文章目录 一、24. 两两交换链表中的节点1.题目简介2.解题思路3.代码4.运行结果 二、50. Pow(x, n)1.题目简介2.解题思路3.代码4.运行结果 三、2331. 计算布尔二叉树的值1.题目简介2.解题思路3.代码4.运行结果 总结 一、24. 两两交换链表中的节点 1.题目简介 24. 两两交换链表…

(13) Qt事件系统(two)

目录 事件分发函数 无边框窗口拖动 自定义事件 发送事件的函数 自定义事件 系统定义的事件号 自定义事件号 自定义事件类 发送和处理事件 sendEvent与postEvent的区别 栈区对象 堆区对象 事件传播机制 事件传播的过程 事件传播到父组件 鼠标单击事件与按钮单击信…

若依框架 - 对二次封装数据分页

LsDistrictController /*** 查询地段列表*/ApiOperation("查询地段列表")GetMapping("/list")public TableDataInfo list(LsDistrict lsDistrict) {startPage();Map<String, List> map lsDistrictService.selectLsDistrictList(lsDistrict);if (Col…

express学习笔记5 - 自定义路由异常处理中间件

修改router/index.js&#xff0c;添加异常处理中间件 *** 自定义路由异常处理中间件* 注意两点&#xff1a;* 第一&#xff0c;方法的参数不能减少* 第二&#xff0c;方法的必须放在路由最后*/ router.use((err, req, res, next) > {console.log(err);const msg (err &…

数字电路(一)

1、例题 1、进行DA数模转换器选型时&#xff0c;一般要选择主要参数有&#xff08; A&#xff09;、转换精度和转换速度。 A、分辨率 B、输出电流 C、输出电阻 D、模拟开关 2、下图所示电路的逻辑功能为&#xff08; B&#xff09; A、与门 B、或门 C、与非门 D、或非门 分析该…