JDBC魔法:连接MySQL数据库与数据操作的秘籍

文章目录

    • 一. JDBC介绍
    • 二. 数据库驱动
      • 1.DriverManager
      • 2.Connection
      • 3.PreparedStatement
      • 4.ResultSet
    • 三. JDBC连接MySQL
      • 1. 加载驱动
      • 2. 获得连接
      • 3. 关闭连接
    • 四. JDBC实现数据新增
    • 五. JDBC实现数据删除

一. JDBC介绍

  • JDBC(Java Database Connectivity)是Java平台的标准API,用于执行SQL语句并与数据库进行交互。

  • JDBC为Java应用程序提供了访问各种数据库系统的统一接口,使得开发人员可以编写与数据库无关的应用程序。

  • 在JDBC出现之前,每个数据库厂商都有自己的API和连接方式,这导致开发人员需要为不同的数据库编写不同的代码。

  • JDBC的出现解决了这一问题,通过提供一个标准的API,使得Java应用程序可以轻松地连接和操作不同类型的数据库。

二. 数据库驱动

JDBC通过数据库驱动程序来实现与特定数据库的通信。

每个数据库厂商通常会提供一个JDBC驱动程序,该驱动程序实现了JDBC API,使得Java应用程序可以通过JDBC接口与数据库进行交互。常见的数据库驱动程序包括(需要在编辑器中导入对应的jar包):

1.DriverManager

DriverManager 类是JDBC的核心类之一,用于管理和注册驱动程序,并建立数据库连接。

  • getConnection(String url, String user, String password) : 获取数据库连接。

2.Connection

表示与数据库的连接。通过 Connection 对象,可以创建 PreparedStatement 对象,用于执行所对应的SQL语句。

3.PreparedStatement

用于执行预编译的SQL语句,可以提高性能并防止SQL注入攻击。

4.ResultSet

表示查询结果集,提供了遍历和检索结果的方法。常用的方法包括:

  • next() : 移动到下一个记录。

  • getString(int columnIndex) : 获取指定列的字符串值。

  • getInt(int columnIndex) : 获取指定列的整数值。

三. JDBC连接MySQL

1. 加载驱动

static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

2. 获得连接

public static Connection getCon() {
Connection con=null;
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?
serverTimezone=GMT","用户名","密码");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}

3. 关闭连接

public static void close(Connection con, PreparedStatement ps, ResultSet rs) {
try {
if (con ≠ null)
con.close();
if (ps ≠ null)
ps.close();
if (rs ≠ null)
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}

四. JDBC实现数据新增

public class Book {
private int id;
private String title;
private double price;
private String description;
}
public int add(Book b) {
try {
con=DBHelper.getCon();
String sql="insert into book(title,price,description)"
+ " values(?,?,?)";
ps=con.prepareStatement(sql);
ps.setString(1, b.getPrice());
ps.setString(2, b.getAuthor());
ps.setString(3, b.getDescription);
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}

五. JDBC实现数据删除

public int del(Integer id) {
try {
con=DBHelper.getCon();
String sql="delete from book where id=?";
ps=con.prepareStatement(sql);
ps.setInt(1, id);
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WP网站如何增加文章/页面的自定义模板

通过Wordpress我们后台在发布文章或者页面的时候其实可以看到有些主题 他有选择使用的页面模板,可以自定义模板,但是有些主题却没有选择主题这个功能,那这个自定义模板的功能是如何实现的呢?以下分两种情况:Page页面和…

Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式

此去经年,再难同游 —— 24.11.11 一、什么是设计模式 设计模式是一种编程套路,可以极大的方便程序的开发最常见、最经典的设计模式,就是我们所学习的面向对象了。 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模…

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪 1、路由关系 2、漏洞触发口unserialize(base64_decode($data)); 2、__destruct(),魔术法方法调用close函数方法 3、未找到利用链,尝试__call魔术方法 4、逆推找call_user_func 函数 第一部分 namespace yii\db; class BatchQueryResu…

Flink新版Source接口源码解析

目录 1. 前言 2. Source解析 2.1 Source类图 2.2 接口和方法说明 2.2.1 Source,> 3. SplitEnumerator解析 3.1 SplitEnumetator类图 3.2 类和方法说明 3.2.1 SplitEnumerator 3.2.2 SimpleVersionedSerializer 4. SourceReader解析 4.1 SourceReader类图 4.2 类…

SpringBoot后端解决跨域问题

1.全局方式 新建一个conifg配置类,内容如下: Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")//是否发送Cookie.allowCrede…

qt QUndoCommand 与 QUndoStack详解

1、概述 QUndoCommand 和 QUndoStack 是 Qt 框架中用于实现撤销/重做(undo/redo)功能的两个核心类。QUndoCommand 是表示单个可撤销操作的基类,而 QUndoStack 则负责管理这些命令的堆栈,提供撤销和重做操作的接口。 QUndoCommand…

Struts源码阅读——三个常用的辅助类DispatchAction

Struts源码阅读——三个常用的辅助类 紧接前文,我们来阅读org.apache.struts.actions包中三个常用类的源码。 DispatchAction、LookupDispatchAction 和 MappingDispatchAction 是 Struts 1 框架中的三个常用的辅助类,用来简化 Action 类中的请求分发。…

C++中的栈(Stack)和堆(Heap)

在C中,堆(heap)和栈(stack)是两种用于存储数据的内存区域。理解它们的原理和区别,对于优化代码性能和确保代码的安全性至关重要。以下是对C中堆栈的详细解析,包括它们的分配方式、优缺点、应用场…

群控系统服务端开发模式-应用开发-前端登录接口开发

一、修改验证方法 1、修改验证器 loginRules: {username: [{required: true, trigger: blur, validator: validateUsername}],password: [{required: true, trigger: blur, validator: validatePassword}],captcha_code: [{required: true, trigger: blur, validator: validat…

游戏引擎学习第10天

视频参考:https://www.bilibili.com/video/BV1LyU3YpEam/ 介绍intel architecture reference manual 地址:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html RDTS(读取时间戳计数器)指令是 x86/x86_64 架构中的…

MySQL查询某个数据库中特定表的空间占用大小

如果您也想要查询某个数据库中特定表的空间占用大小,包括数据和索引的大小,那么您可以使用以下SQL查询。这个查询将显示特定表在数据库中的数据大小、索引大小以及总大小。 SELECT table_name AS Table,ROUND(((data_length index_length) / 1024 / 10…

SystemVerilog学习笔记(十一):接口

在Verilog中,模块之间的通信是使用模块端口指定的。 Verilog模块连接的缺点 声明必须在多个模块中重复。存在声明不匹配的风险。设计规格的更改可能需要修改多个模块。 接口 SystemVerilog引入了 interface 结构,它封装了模块之间的通信。一个 inter…

el-input 正则表达式校验输入框不能输入汉字

<el-form :model"data1" :rules"rules" ref"ruleForm" label-width"210px" class"demo-ruleForm"><el-form-item label"锯路&#xff1a;" prop"sawKref"><el-input class"inptWid…

Pikachu[暴力破解:token防爆破]

暴力破解:token防爆破 校验方式&#xff1a; 请求中添加token防止爆破&#xff0c;登录时需携带服务器上一次加载时发送的token进行校验 解决&#xff1a; burp--intruder模块设置中使用Grep-Extract功能提取页面中的token&#xff0c;并将载荷类型更改为递归查询[Recursiv…

Springboot如何打包部署服务器

文章目的&#xff1a;java项目打包成jar包或war包&#xff0c; 放在服务器上去运行 一、编写打包配置 1. pom.xml 在项目中的pom.xml文件里面修改<build>...</build>的代码 >> 简单打包成Jar形式&#xff0c;参考示例&#xff1a; <build><fina…

flink 同步oracle11g数据表到pg库

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalldvi /etc/selinux/config 修改为disabled2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署postgresql 看需求安装pg库…

机器学习: LightGBM模型(优化版)——高效且强大的树形模型

LightGBM&#xff08;Light Gradient Boosting Machine&#xff09;是一种基于梯度提升决策树&#xff08;GBDT&#xff09;的框架&#xff0c;由微软提出。它具有高效的训练速度、低内存占用、支持并行和GPU加速等特点&#xff0c;非常适合大规模数据的训练任务&#xff0c;尤…

mysql中的EXISTS和NOT EXISTS使用详解

本文来编写一个实例说下mysql中的EXISTS和NOT EXISTS使用详解 文章目录 exists用法SQL中in, not in, exists, not exists的区别使用实例本文小结 exists用法 exists: 如果括号内子查询语句返回结果不为空&#xff0c;说明where条件成立&#xff0c;就会执行主SQL语句。如果括号…

idea 弹窗 delete remote branch origin/develop-deploy

想删除远程分支&#xff0c;就选delete&#xff0c;仅想删除本地分支&#xff0c;选cancel&#xff1b; 在 IntelliJ IDEA 中遇到弹窗提示删除远程分支 origin/develop-deploy&#xff0c;这通常是在 Git 操作过程中出现的情况&#xff0c;可能是在执行如 git branch -d 或其他…

基于微信小程序的高校实习管理系统设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自…