JDBC第一篇【介绍JDBC、使用JDBC连接数据库、简单的工具类】(修订版)

使用JDBC连接MySQL数据库 目录 1.MySQL驱动配置和使用 2.通过JDBC连接数据库 3.解决JDBC连接数据库时存在的SQL注入问题 4.使用封装工具类实现JDBC连接数据库 使用JDBC连接数据库 1.MySQL驱动配置和使用 下载驱动 JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。 主要用于执行 SQL 查询,并查看查询的记录。 使用 JDBC 需要先下载驱动。mysql8需要设置时区,有cj目录,mysq... 阅读详情

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

什么是JDBC

JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API

为什么我们要用JDBC

简单操作JDBC

步骤:

  1. 导入MySQL或者Oracle驱动包

  2. 装载数据库驱动程序

  3. 获取到与数据库连接

  4. 获取可以执行SQL语句的对象

  5. 执行SQL语句

  6. 关闭连接

Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {    /*    * 加载驱动有两种方式    *    * 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译    * 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高    *    * 我们一般都是使用第二种方式    * */    //1.    //DriverManager.registerDriver(new com.mysql.jdbc.Driver());    //2.    Class.forName("com.mysql.jdbc.Driver");    //获取与数据库连接的对象-Connetcion    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");    //获取执行sql语句的statement对象    statement = connection.createStatement();    //执行sql语句,拿到结果集    resultSet = statement.executeQuery("SELECT * FROM users");    //遍历结果集,得到数据    while (resultSet.next()) {        System.out.println(resultSet.getString(1));        System.out.println(resultSet.getString(2));    }} catch (SQLException e) {    e.printStackTrace();} catch (ClassNotFoundException e) {    e.printStackTrace();} finally {    /*    * 关闭资源,后调用的先关闭    *    * 关闭之前,要判断对象是否存在    * */    if (resultSet != null) {        try {            resultSet.close();        } catch (SQLException e) {            e.printStackTrace();        }    }    if (statement != null) {        try {            statement.close();        } catch (SQLException e) {            e.printStackTrace();        }    }    if (connection != null) {        try {            connection.close();        } catch (SQLException e) {            e.printStackTrace();        }    }}
Statement statement = null;
ResultSet resultSet = null;

try {

    /*
    * 加载驱动有两种方式
    *
    * 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译
    * 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高
    *
    * 我们一般都是使用第二种方式
    * */


    //1.
    //DriverManager.registerDriver(new com.mysql.jdbc.Driver());

    //2.
    Class.forName("com.mysql.jdbc.Driver");

    //获取与数据库连接的对象-Connetcion
    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");

    //获取执行sql语句的statement对象
    statement = connection.createStatement();

    //执行sql语句,拿到结果集
    resultSet = statement.executeQuery("SELECT * FROM users");

    //遍历结果集,得到数据
    while (resultSet.next()) {

        System.out.println(resultSet.getString(1));

        System.out.println(resultSet.getString(2));
    }

} catch (SQLException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} finally {

    /*
    * 关闭资源,后调用的先关闭
    *
    * 关闭之前,要判断对象是否存在
    * */


    if (resultSet != null) {
        try {
            resultSet.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    if (statement != null) {
        try {
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}

上面我们已经简单使用JDBC去查询数据库的数据了,接下来我们去了解一下上面代码用到的对象


Connection对象

客户端与数据库所有的交互都是通过Connection来完成的。

常用的方法:

//创建向数据库发送sql的statement对象。createcreateStatement()//创建向数据库发送预编译sql的PrepareSatement对象。prepareStatement(sql) //创建执行存储过程的callableStatement对象prepareCall(sql)//设置事务自动提交setAutoCommit(boolean autoCommit)//提交事务commit()//回滚事务rollback()

createcreateStatement()

//创建向数据库发送预编译sql的PrepareSatement对象。

prepareStatement(sql) 

//创建执行存储过程的callableStatement对象

prepareCall(sql)

//设置事务自动提交

setAutoCommit(boolean autoCommit)

//提交事务

commit()

//回滚事务

rollback()

Statement对象

Statement对象用于向数据库发送Sql语句,对数据库的增删改查都可以通过此对象发送sql语句完成。

Statement对象的常用方法:

//查询executeQuery(String sql)//增删改executeUpdate(String sql)//任意sql语句都可以,但是目标不明确,很少用execute(String sql)//把多条的sql语句放进同一个批处理中addBatch(String sql)//向数据库发送一批sql语句执行executeBatch()

executeQuery(String sql)

//增删改

executeUpdate(String sql)

//任意sql语句都可以,但是目标不明确,很少用

execute(String sql)

//把多条的sql语句放进同一个批处理中

addBatch(String sql)

//向数据库发送一批sql语句执行

executeBatch()

ResultSet对象

ResultSet对象代表Sql语句的执行结果,当Statement对象执行executeQuery()时,会返回一个ResultSet对象

ResultSet对象维护了一个数据行的游标【简单理解成指针】,调用ResultSet.next()方法,可以让游标指向具体的数据行,进行获取该行的数据

常用方法:

//获取任意类型的数据getObject(String columnName)//获取指定类型的数据【各种类型,查看API】getString(String columnName)//对结果集进行滚动查看的方法next()Previous()absolute(int row)beforeFirst()afterLast()

getObject(String columnName)

//获取指定类型的数据【各种类型,查看API】

getString(String columnName)

//对结果集进行滚动查看的方法

next()

Previous()

absolute(int row)

beforeFirst()

afterLast()

写一个简单工具类

通过上面的理解,我们已经能够使用JDBC对数据库的数据进行增删改查了,我们发现,无论增删改查都需要连接数据库,关闭资源,所以我们把连接数据库,释放资源的操作抽取到一个工具类

/** 连接数据库的driver,url,username,password通过配置文件来配置,可以增加灵活性* 当我们需要切换数据库的时候,只需要在配置文件中改以上的信息即可** */private static String  driver = null;private static String  url = null;private static String  username = null;private static String password = null;static {    try {        //获取配置文件的读入流        InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties");        Properties properties = new Properties();        properties.load(inputStream);        //获取配置文件的信息        driver = properties.getProperty("driver");        url = properties.getProperty("url");        username = properties.getProperty("username");        password = properties.getProperty("password");        //加载驱动类        Class.forName(driver);    } catch (IOException e) {        e.printStackTrace();    } catch (ClassNotFoundException e) {        e.printStackTrace();    }}public static Connection getConnection() throws SQLException {    return DriverManager.getConnection(url,username,password);}public static void release(Connection connection, Statement statement, ResultSet resultSet) {    if (resultSet != null) {        try {            resultSet.close();        } catch (SQLException e) {            e.printStackTrace();        }    }    if (statement != null) {        try {            statement.close();        } catch (SQLException e) {            e.printStackTrace();        }    }    if (connection != null) {        try {            connection.close();        } catch (SQLException e) {            e.printStackTrace();        }    }}

private static String  driver = null;
private static String  url = null;
private static String  username = null;
private static String password = null;

static {
    try {

        //获取配置文件的读入流
        InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties");

        Properties properties = new Properties();
        properties.load(inputStream);

        //获取配置文件的信息
        driver = properties.getProperty("driver");
        url = properties.getProperty("url");
        username = properties.getProperty("username");
        password = properties.getProperty("password");

        //加载驱动类
        Class.forName(driver);


    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

}

public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(url,username,password);
}
public static void release(Connection connection, Statement statement, ResultSet resultSet) {

    if (resultSet != null) {
        try {
            resultSet.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (statement != null) {
        try {
            statement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (connection != null) {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


最后

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

640?wx_fmt=jpeg

有帮助?好看!转发!640
IDEA使用JDBC连接数据库,简单实例 1.双击打开IDEA 2.JDBC驱动的下载 (JDBC驱动jar包的版本要与mysql版本对应,我的mysql版本为5.0,导入的jar包版本为5.1) mysql官网下载驱动包https://dev.mysql.com/downloads/connector/j/ 3.IDEA导入JDBC的驱动jar包导入 选择File->Project Structure,再点击下图中的 + ,选择... 阅读详情

相关推荐

JDBC的介绍和连接数据库执行sql语句的流程

一、首先介绍一下什么JDBC 现在的应⽤系统⼤多都离不开数据库,Java程序访问数据库的基本⽅式是通过JDBC。JDBC(Java DataBase Connectivity,Java数据库连接)技术的简称,是⼀种⽤于执⾏SQL语句的Java API。它由⼀组⽤Java编程语⾔编写的类和接⼝组成。这个API由 java.sql.*,javax.sql.* 包中的⼀些...

MADE_哒哒 1865

JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】

1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】 sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。 对于我们来说,操作数据库...

3y 593

JDBC 数据库连接全解析:从驱动配置到工具类封装

后缀properties的文件是一种属性文件。这种文件以key=value格式存储内容Java中可以使用Properties工具类来读取这个文件项目中会将一些配置信息放到properties文件中,所以properties文件。

艺杯羹的博客 9321

java通过JDBC链接SQLServer2012【转载!!!超详细】

http://blog.youkuaiyun.com/stewen_001/article/details/19553173/ <script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { ...

3y 804

JDBC MySQL数据库连接工具类实战指南

JDBC(Java Database Connectivity)是Java开发中用于连接和操作数据库的一种标准编程接口。通过JDBC,Java程序可以执行SQL语句、调用存储过程、处理结果集等,实现对数据库的各种操作。它是Sun Microsystems公司于1996年推出的一个通用的数据库访问方法,经过多年的迭代发展,已经成为数据库操作不可或缺的技术之一。

weixin_34718952的博客 1147

JDBC连接Oracle数据库工具类实战设计

✅ 防止SQL注入:参数不会参与SQL语法解析✅ 提高性能:Oracle共享池缓存执行计划✅ 支持批量绑定:配合addBatch()实现高效批量操作Oracle内部工作流程如下:participant App as 应用程序participant Oracle as Oracle数据库")JDBC->>Oracle: 发送SQL模板 + PARSE请求Oracle-->>JDBC: 返回执行计划句柄loop 多次执行Oracle-->>JDBC: 返回结果集。

weixin_33773084的博客 919

jdbc preparestatement 执行多条语句_JDBC第一篇【介绍JDBC、使用JDBC连接数据库、简单的工具类】(修订版)...

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y什么是JDBCJDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API为什么我们要用JDBC市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,...

weixin_39968823的博客 235

三相电机控制中的端电压、相电压与线电压波形解析

本文深入解析了三相电机控制中端电压、相电压与线电压的核心概念与波形差异。通过对比方波控制、SPWM和SVPWM三种主流控制策略下的实测波形特征,揭示了不同控制逻辑对电压波形(如梯形波、正弦波、马鞍波)的影响。文章重点阐述了SVPWM控制如何通过生成马鞍波形端电压来提高直流母线电压利用率,并提供了实用的波形测量与调试指南,帮助工程师深入理解电机控制原理并进行有效调试。

qsc901234567的博客 1400

jdbc连接数据scanip_JDBC第一篇介绍JDBC、使用JDBC连接数据库、简单的工具类(修订版)...

什么是JDBCJDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API为什么我们要用JDBC市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。对于我们来说,操作数据库都是在JDBC API【接口】上...

weixin_35993037的博客 103

用PyTorch和snnTorch库5分钟搞定一个脉冲神经网络(SNN)手写数字识别Demo

本文详细介绍了如何使用PyTorch和snnTorch库快速搭建一个脉冲神经网络(SNN)手写数字识别Demo。通过模拟生物神经元的脉冲发放机制,SNN在低功耗场景中展现出独特优势。文章涵盖环境配置、数据预处理、模型构建、训练评估全流程,并提供了性能优化技巧和常见问题解决方案,帮助开发者在5分钟内实现高效的SNN应用。

weixin_29300931的博客 392

Cadence Allegro 17.4学习记录开始01-原理图Capture CIS 17.4

Orcad的学习记录

qq_31444421的博客 1万+

JDBC 数据库连接技术简介

介绍数据库连接技术 JDBC。

Jacks丶的博客 3429

别再手动建模了!用Simscape Multibody Link一键导入SolidWorks装配体到Simulink

本文介绍了如何利用Simscape Multibody Link插件将SolidWorks装配体一键导入Simulink,实现CAD到仿真的无缝衔接。该技术显著提升机械系统设计与控制效率,特别适用于工业机器人、车辆悬架等复杂机构的动力学分析。文章详细解析了插件安装、模型导出优化及仿真验证的全流程,帮助工程师摆脱手动建模的低效工作模式。

weixin_27256197的博客 461

Jdbc数据库的连接工具类

用java连接上MySQL数据库。这里写的是连接数据库的工具类。

旺仔爱编程 3302

修复ASUS in WinRE教程

暑假入手了天选三,发现是win11家庭版,本来想着家庭版将就一下无所谓,结果在使用的过程中发现相较于专业版真的是不能比,于是自己就重装了系统,发现ASUS in WinRE入口不见了,折腾半天最后成功修复。

weixin_46202629的博客 1万+

【制作100个unity游戏之22】3DRPG游戏开发07——其他详细的设计

我们会有有很多单例,如果每个单例都去写会很麻烦,所以我们定义泛型单例模式 Singleton,我们将所有的单例都继承这个泛型单例,就省略很多重复的工作定义一个GameManager类,继承Singleton,控制整个游戏的进度,比如如果主角死了,广播,游戏结束调用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2577

使用JDBC连接MySQL数据库(一)

一、下载mysql对应的JDBC驱动: jar包网址:https://mvnrepository.com/artifact/mysql/mysql-connector-java, 选择一个下载次数比较多的,具体看自己需求。 二、编译器: 这里使用的编译器是idea 三、新建一个java项目: 在项目中创建一个lib文件夹,将下载将下载好的JDBC驱动添加到lib文件夹中 四、让添加的JDBC驱...

码无止境的博客 4619

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

JDBC连接数据库工具类及连接Access数据库示例

1、JDBC连接各个数据库时,存在很多相同的代码部分,把这些部分单独写在一个类里面,根据传入的driver、url、user、password这些参数连接到特定的数据库,工具类代码如下: package mine.util.database; import java.sql.Connection; import java.sql.DriverManager; import java.s

Touch_2011的专栏 8770

【Ubuntu】RK3576 Linux 6.10 Ubuntu 22.04 系统中 HUSB311 Type-C 转 DP 显示输出与 Device/OTG 模式切换配置详解

本文详细介绍了在Rockchip RK3576开发板(Linux Kernel 6.10+Ubuntu 22.04)上配置HUSB311 Type-C控制器的设备树实现方案。主要内容包括:1)硬件连接与模块组成;2)设备树完整配置,涵盖Type-C供电、USB OTG/Host模式、DP显示输出等关键功能;3)软件配置步骤与常见问题排查方法。该方案实现了Type-C接口的DisplayPort AltMode显示输出、USB Device/Host模式自动切换等功能,为嵌入式系统Type-C接口开发提供参考

qq_34478161的博客 808

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

(JDBC)IDEA中使用JDBC来连接MySQL数据库并进行相应的操作

文章目录第一步:在Navicat中创建测试的数据库第二步:在idea中,创建一个普通项目,名为JDBC第三步:导入数据库驱动第四步:编写测试代码第五步:提取工具类 第一步:在Navicat中创建测试的数据库 在Navicat中输入如下代码,创建数据库: CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStudy; CREATE TABLE `users`( id INT PRIMARY KEY,

fjswcjswzy的博客 1961

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JAVA中自己封装JDBC工具类

零、码仙励志 朋友和我说:人都是逼出来的。我经过深思熟虑,觉得很有道理。 一、前期准备 首先创建一个Dynamic Web Project 工程 jdbc ,接着创建俩个包和一个文件db.properties,然后导入MySQL驱动类。 新建工程和导入驱动我这里就不介绍了,不会的看下面这篇文章 JAVA中的JDBD(MYSQL) 下面是我的工程截图,可以按照我的来 二、创...

秦哥的博客 4459

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdbc连接mysql工具类_jdbc之工具类DBUtil的使用

首先回顾一下jdbc的使用方法:1. 注册驱动2. 建立连接3. 建立statement4. 定义sql语句5. 执行sql语句,如果执行的是查询需遍历结果集6. 关闭连接其中建立连接和关闭连接都是可以封装成工具类的,因此给出DBUtil代码如下:package com.colin.util;import java.sql.*;public class DBUtil {private static...

weixin_34917038的博客 982

JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】

什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要根据不同...

weixin_39037804的博客 143
上一篇: JDBC第四篇【数据库连接池、DbUtils框架、分页】(修订版)
下一篇: JDBC第三篇【事务、元数据、改造JDBC工具类】(修订版)
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值