Java 使用 jdbc 连接 mysql

news2024/11/29 8:41:27

简介

Java JDBC 是 Java Database Connectivity 的缩写,它是一种用于连接和操作数据库的标准 API。Java JDBC 可以让 Java 程序通过 JDBC 驱动程序连接到各种不同类型的数据库,并且执行 SQL 语句来实现数据的读取、插入、更新、删除等操作。在本篇文章中,我们将介绍 Java JDBC 的基本使用,并附上示例代码。

在这里插入图片描述

Java JDBC 的使用步骤如下:

  1. 导入 JDBC 驱动程序
    在使用 JDBC 之前,需要先导入 JDBC 驱动程序。不同的数据库需要使用不同的 JDBC 驱动程序。例如,如果要连接 MySQL 数据库,需要下载 MySQL Connector/J 驱动程序,然后将其添加到项目的类路径中。通常,我们可以通过 Maven 或 Gradle 等构建工具来管理依赖和导入 JDBC 驱动程序。
  2. 加载 JDBC 驱动程序
    在使用 JDBC 之前,还需要加载 JDBC 驱动程序。可以使用 Class.forName() 方法来动态加载 JDBC 驱动程序,例如:
Class.forName("com.mysql.jdbc.Driver");

详细步骤

建立数据库连接

通过 JDBC 驱动程序,可以建立与数据库的连接。连接到数据库需要指定数据库的 URL、用户名和密码。例如,连接到 MySQL 数据库的代码如下:

String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "mypassword";
Connection conn = DriverManager.getConnection(url, user, password);

创建 Statement 对象

一旦与数据库建立了连接,就可以使用 Statement 对象来执行 SQL 语句。Statement 对象用于向数据库发送 SQL 语句,并返回查询结果。例如,创建 Statement 对象的代码如下:

Statement stmt = conn.createStatement();

执行 SQL 语句

使用 Statement 对象执行 SQL 语句。执行 SQL 语句可以使用 Statement 对象的 execute() 方法、executeQuery() 方法和 executeUpdate() 方法。其中,execute() 方法用于执行任何类型的 SQL 语句,executeQuery() 方法用于执行 SELECT 语句并返回结果集,executeUpdate() 方法用于执行 INSERT、UPDATE 或 DELETE 语句并返回受影响的行数。例如,执行 SELECT 语句并返回结果集的代码如下:

ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");

处理查询结果

如果执行 SQL 语句返回结果集,可以使用 ResultSet 对象来处理查询结果。ResultSet 对象代表一个结果集,用于遍历查询结果。例如,遍历查询结果的代码如下:

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");
    System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}

关闭连接和 Statement 对象

在使用完数据库连接和 Statement 对象后,需要将其关闭以释放资源。例如,关闭连接和 Statement 对象的代码如下:

rs.close();
stmt.close();
conn.close();

完整例子

下面是一个完整的 Java JDBC 示例代码,演示了如何连接到 MySQL 数据库,执行 SELECT 语句并处理查询结果:##

import java.sql.*;

public class JdbcDemo {
    public static void main(String[] args) {
        try {
            // 导入 JDBC 驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 建立数据库连接
            String url = "jdbc:mysql://localhost:3306/mydatabase";
            String user = "root";
            String password = "mypassword";
            Connection conn = DriverManager.getConnection(url, user, password);

            // 创建 Statement 对象
            Statement stmt = conn.createStatement();

            // 执行 SQL 语句并返回结果集
            ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");

            // 处理查询结果
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id=" + id + ", name=" + name + ", age=" + age);
            }

            // 关闭连接和 Statement 对象
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

总结

Java JDBC 是一种用于连接和操作数据库的标准 API,它可以让 Java 程序通过 JDBC 驱动程序连接到各种不同类型的数据库,并且执行 SQL 语句来实现数据的读取、插入、更新、删除等操作。使用 Java JDBC 的基本步骤包括导入 JDBC 驱动程序、加载 JDBC 驱动程序、建立数据库连接、创建 Statement 对象、执行 SQL 语句、处理查询结果和关闭连接和 Statement 对象。

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

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

相关文章

Springboot整合Flowable流程引擎

文章目录 前言1. Flowable的主要表结构1.1 通用数据表(通用表)1.2运行时数据表(runtime表)1.3.历史数据表(history表)1.4. 身份数据表(identity表)1.5. 流程定义数据表(r…

C++: 并行加速图像读取和处理的过程

文章目录 1. 目的2. 设计3. 串行实现4. 并行实现5. 比对:耗时和正确性6. 加速比探讨 1. 目的 读取单张图像,计算整图均值,这很好实现,运行耗时很短。 读取4000张相同大小的图像,分别计算均值,这也很好实现…

【OpenCv • c++】形态学技术操作 —— 开运算与闭运算

🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者:锡兰_CC ❣️📝 专 栏:【OpenCV • c】计算机视觉🌈 若有帮助,还请关注➕点赞➕收藏&#xff…

openGauss5.0.0在vscode成功调试

之前在虚拟机上编译成功过,但今天启动数据库的时候出现权限错误问题,我重新删除了data文件夹,重新初始化启动数据库还是不成功,后来对报错文件进行赋权,成功解决! 问题(一) 1.启动…

图像水印MATLAB实验

文章目录 一、实验目的二、实验内容1. 简单的可见水印嵌入实验2. 不可见脆弱水印实验3. 不可见鲁棒水印实验 一、实验目的 了解数字图像水印技术的基本原理、分类和应用。掌握简单的可见水印和不可见水印的嵌入方法。实现一种基于DCT的不可见鲁棒水印,并进行水印鲁…

Dubbo 服务端源码深入分析 (7)

目录 1. 前提 2. 认识 Protocol 和 ProxyFactory Protocal ProxyFactory Dubbo服务流程 服务端源码分析 测试代码: Protocal代理的源码 ProxyFactory源码: 获取invoker对象 具体步骤 1. 我们调用的是ProxyFactory的代理对象的getInvoker方法…

Linux线程同步(6)——更高并行性的读写锁

互斥锁或自旋锁要么是加锁状态、要么是不加锁状态,而且一次只有一个线程可以对其加锁。读写锁有 3 种状态:读模式下的加锁状态(以下简称读加锁状态)、写模式下的加锁状态(以下简称写加锁状态)和不加锁状态&…

django视图(request请求response返回值)

一、视图函数介绍 视图就是应用中views.py中定义的函数,称为视图函数 def index(request):return HttpResponse("hello world!") 1、视图的第一个参数必须为HttpRequest对象,还可能包含下参数如通过正则表达式组获取的位置参数、通…

VBA——01篇(入门篇——简单基础语法)

VBA——01篇(入门篇——简单基础语法) 1. 语法格式1.1 简单语法1.2 简单例子 2. 变量2.1 常用数据类型2.2 声明变量的常用方式2.3 简单例子 3. 单元格赋值3.1 直接赋值3.2 拷贝单元格 4. 简单的逻辑语法4.1 简单if4.2 简单for循环4.2.1 简单语法例子4.2.…

基于混合整数二阶锥(MISOCP)的配电网重构(附matlab代码)

参考资料:主动配电网网络分析与运行调控 (sciencereading.cn) 配电网重构是指在满足配电网运行基本约束的前提下,通过改变配电网中一个或多个开关的状态对配电网中一个或多个指标进行优化。通过配电网重构,可以在不增加设备投资的情况下&…

注解实现:判空赋值

工作中的小玩意~~ 流程: 注解实现反射工具类 注解定义及实现 注解定义: Documented Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface CheckParam {String value() default "-1"; }简单解释上述其相关注解…

哈工大2023春计算机组成原理真题回忆

仅供同学参考,严禁用作商业用途 如发现将追究责任 2023-5-14 属鼠经历了计算机组成原理考试 现将本人真题回忆如下:欢迎大家补充,并期待大家一起参与这个开源的项目。 致谢:真诚感谢草履虫同学提供的图片 15个选择部分回忆如下 &#xff1a…

【历史上的今天】4 月 13 日:Damn Small Linux 首次发布;谷歌关闭短网址服务;数学先驱出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 13 日,在 2006 年的今天,盛大文学榕树下网站被民营企业收购;原创文学网站榕树下被民营传媒集团欢乐传媒收购&#xff…

hnust 湖南科技大学 2023 软件测试技术 期中考试 复习资料

前言 写的比较匆忙,重点也不明确,没什么参考价值致谢:ly,zxq重点来源:信安※:补充内容★:重点✦:个人推测考点考试范围:1-9章获取最新版本 题型 判断:10简…

AMBER分子动力学模拟之TOP准备-- HIV蛋白酶-抑制剂复合物(1)

AMBER分子动力学模拟之TOP准备-- HIV蛋白酶-抑制剂复合物(1) 我们以HIV蛋白酶-抑制剂复合物为例子,跑Amber动力学模拟 下载1phv 从PBD下载文件:https://www.rcsb.org/ PDB文件预处理 我们以 “protein(water) ligandcomplex” 为例来说一下如何处…

系统设计基本原理-耦合与内聚

耦合 耦合是模块之间的相互独立性(互相连接的紧密程度)的度量,耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。 耦合类型 无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用&…

k8s基础11——安全控制之RBAC用户授权、RBAC用户组授权、SA程序授权

文章目录 一、K8s安全框架1.1 鉴权1.1.1 HTTPS证书认证1.1.2 HTTP Token认证 1.2 授权1.3 准入控制1.4 集群四大角色 二、RBAC给用户授权(TLS)2.1 签发客户端证书2.2 生成kubeconfig授权文件2.2.1 手动生成2.2.2 脚本生成2.2.3 切换操作集群 2.3 定义RBA…

移动应用开发实验-内容提供者-ContentResolver的使用

文章目录 前言读取通讯录信息要求环境 具体实现主页面布局(activity_main.xml)关于RecyclerView库的相关问题添加RecyclerView库操作 解决报错Item布局(info.xml)添加访问权限编写实体类(ContactInfo.java)编写适配器(MyAdapter.java&#xf…

20 散列表的查找

散列表的查找 简介:散列表(也成哈希表)是一种高效的数据结构,他可以在平均复杂度为O(1)的情况下实现查找、插入和删除操作。 哈希表的基本思想是根据关键字的值来计算其应存储的位置。这个计算过程就是通过哈希函数来实现的。 根…

计算机视觉——day 91基于双网络的鲁棒特征高光谱目标检测(偏门且很水啊)

基于双网络的鲁棒特征高光谱目标检测 I. INTRODUCTIONII. 提出的方法A. 总体框架B.训练集构建C. Dual Networks III. EXPERIMENTSIV. 结论 I. INTRODUCTION 用于高光谱目标检测的深度网络训练通常面临样本有限的问题,在极端情况下,可能只有一个目标样本…