当前位置: 首页 > news >正文

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;
}
http://www.lryc.cn/news/483313.html

相关文章:

  • 深入了解Scratch:引导初学者开启编程之旅
  • js复制内容到剪切板
  • 代码 RNN原理及手写复现
  • 企业官网的在线客服,如何提高效果?
  • 「实战应用」如何可视化 DHTMLX Scheduler 中的资源工作量?
  • 论文阅读《BEVFormer》
  • sql专题 之 sql的执行顺序
  • Vue3 -- 基于Vue3+TS+Vite项目【项目搭建及初始化】
  • CTF-RE: TEA系列解密脚本
  • 信号量和线程池
  • 【人工智能】10分钟解读-深入浅出大语言模型(LLM)——从ChatGPT到未来AI的演进
  • 「QT」几何数据类 之 QPointF 浮点型点类
  • 可能是全网第一个MySQL Workbench插件编写技巧
  • D62【python 接口自动化学习】- python基础之数据库
  • 探索美赛:从准备到挑战的详细指南
  • IP地址查询——IP归属地离线库
  • “倒时差”用英语怎么说?生活英语口语学习柯桥外语培训
  • Linux入门攻坚——37、Linux防火墙-iptables-3
  • 微服务架构面试内容整理-安全性-Spring Security
  • 新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)
  • 深度学习:广播机制
  • 音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息
  • Openstack7--安装消息队列服务RabbitMQ
  • day55 图论章节刷题Part07([53.寻宝]prim算法、kruskal算法)
  • LeetCode 93-复制 IP地址
  • 海底捞点单
  • It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models
  • Java基础-组件及事件处理(下)
  • npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)
  • 深度学习:nn.Linear