java JDBC连接MySQL数据库调用存储过程进行查询

【Java与MySQL数据库连接实战指南】——从零开始掌握JDBC编程 在企业级开发中,Java 应用程序与数据库之间的交互是必不可少的环节。MySQL 作为最流行的开源关系型数据库之一,广泛应用于各类 Web 应用系统中。本文将从 Java 开发者的角度出发,带你一步步完成 Java 与 MySQL 数据库的连接全过程,并通过实际代码演示如何实现数据增删改查、事务控制、连接池优化等高级功能。MySQL 是一个高性能、多线程、多用户的 SQL 数据库服务器,以其易用性、可扩展性和良好的社区支持而闻名。它适用于中小型项目,也常用于大型系统的后端数据处理。 阅读详情

java JDBC连接MySQL数据库调用存储过程进行查询

主程序代码

package Mysql;

import util.JDBCUtils;
import java.sql.*;
import java.util.Scanner;

public class SaveProcess {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要查询的名字,或姓名当中的一个字。");
        String nm = sc.next();
        search(nm);
    }
    public static void search(String name) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        //1.获取连接对象
        try {
            //1.获取连接对象
            conn = JDBCUtils.getConnection();
            //2.定义sql语句
            String sql ="CALL reader_namelist(?)";
            //3.获取执行sql的对象
            pstmt =  conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            //4.准备参数
            pstmt.setString(1,name);
            //5.执行查询操作
            rs = pstmt.executeQuery();


            //处理结果集
            if(rs.next()){
                System.out.println("查询结果: ");
                System.out.println("读者号         读者姓名        读者类别      读者系别");
                rs.previous(); //前移一步
            }else {
                System.out.println("查不到数据");
            }
            while(rs.next()){
                System.out.println(rs.getString(1).trim() + "           " + rs.getString(2).trim() + "         " + rs.getString(3).trim() + "          " + rs.getString(4).trim());
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JDBCUtils.close(pstmt,conn);
        }
    }
}

上面第三步如果仅仅将sql参数传入会报错( Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY.)
这是因为出现了游标异常,可根据需要改变prepareStatement的参数进而控制游标。具体操作在这不一一列出,将上述报错信息百度即可得知。

工具类

package util;

import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private static String url;
    private static String  user;
    private static String passward;
    private static String driver;
    /**
     * 文件的读取,只需要读取一次即可拿到这些值.使用静态代码块
     */
    static {
        //读取资源文件,获取值。
        try {
            //1.创建Properties集合类.
            Properties pro = new Properties();

  /*          //获取src路径下的文件的方式 ————》ClassLoader类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res = classLoader.getResource("E:\\IDEA\\IdeaProjects\\jdbc\\jdbc\\src\\cn\\jdbc.properties");
            String path = res.getPath();
            System.out.println(path);*/

            //2.加载文件
            pro.load(new FileReader("E:\\IDEA\\IdeaProjects\\jdbc\\jdbc\\src\\cn\\jdbc.properties"));
            //3.获取数据,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            passward = pro.getProperty("passward");
            driver = pro.getProperty("driver");
            //4.注册驱动
            Class.forName(driver);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     *
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,passward);
    }

    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 释放资源
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(PreparedStatement pstmt, Connection conn) {
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

这个类是博主连接JDBC的通用工具类,可根据需要进行修改。

文件信息

url = jdbc:mysql:///books
user = root
passward = 123
driver = com.mysql.cj.jdbc.Driver

以上是把MySQL的信息写入了文件,通过jdbc工具类进行调用(博主觉得这样更加方便)。

存储过程

DELIMITER $$
CREATE PROCEDURE reader_namelist
(IN readern VARCHAR(10))
BEGIN
  SELECT readerno,readername,readertype,readerdept
  FROM reader
  WHERE readername LIKE CONCAT('%',readern,'%')
  ORDER BY readertype;
END $$

上面是用得到的MySQL存储过程。

数据库
是是
reader表
在这里插入图片描述

结果截图

在这里插入图片描述

使用Java实现CRC16 MODBUS 格式校验 CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结 阅读详情

相关推荐

【遥感数字图像处理(朱文泉)】第四章 变换域处理方法

变换域的处理方法

甜子yu的博客 4311

JDBC调用存储过程、MySQL触发器

加载驱动Class.forName创建数据库连接conn= DriverManager.getConnection创建处理块CallableStatement cs = conn.prepareCall放入参数prepareCall.setString执行存储过程prepareCall.execute()关闭连接无参数的存储过程 JDBC编码调用 带参数的存储过程定义 调用存储过程 特殊存储过程参数inout JDBC调用 存储过程包含多个查询结果集 JDBC调用 MySQL触发器 触发器是一种数据库对象,

clear_0217的博客 1076

CMap数据库学习及结果可视化

CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。

zfyyzhys的博客 5602

Java使用JDBC调用Mysql函数和存储过程

之前使用过mybatis和mybatis plus来调用数据库函数和存储过程,这也是目前使用比较广泛和流行的方法,但是今天遇到一个要求就是在一个项目中添加函数调用的功能,这个项目不是使用的mybatis,而是JPA,所以想找一下如何使用JPA调用函数的方法,但是好像没有特别好的方法(可能是我没找到)。后来找到一篇英文解答,使用的是JDBC,然后我试了一下是可以实现功能的,写篇文章记录一下。

sunzixiao的博客 900

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

weixin_37584728的博客 3465

基于分位数回归的静态CoVaR计算 案例与代码

原文链接:https://bbs.pinggu.org/thread-7925441-1-1.html 一、静态CoVaR模型介绍 二、资料简介 实现对相关期刊论文进行论文重现,解决实证分析中的技术操作问题。里面包含了每一步详细的步骤,可以方便的利用这个手册解决大部分利用分位数回归计算静态CoVaR的论文的模型实现问题。即从数据下载到模型实现一整条操作步骤。 关键词:【分位数回归】【Co...

ChenQihome9的博客 7506

java-调用数据库存储过程实现增删改查

首先需要建立一个存储过程 存在user表 设建立存储过程getUserNameAndSexById()用于根据id查询user表的name和sex 代码如下

qq_40604099的博客 998

手把手教你学Simulink--控制执行场景实例:基于Simulink的智能车辆自动紧急制动(AEB)仿真

本文完成了基于 Simulink 的智能车辆自动紧急制动(AEB),实现了:✅ 构建前车急刹与静止障碍物典型场景✅ 设计基于 TTC 的三级 AEB 决策逻辑✅ 验证在高风险场景下有效避免碰撞✅ 掌握从风险评估到制动执行的完整安全链✅ 为ADAS 主动安全功能开发奠定基础。

MHD0815的博客 237

jdbc mysql 存储过程查询数据_JDBC调用存储过程

在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对象位于java.sql包中,它继承于Statement对象,主要用于执行数据库中定义的存储过程,其调用方法如下:{call [(,,...)]}其中,arg1、arg2为存储过程中的参数,如果存储过程中需要传递参数,可以对其进行赋值操作。技巧:存储过程是一个SQL语...

weixin_42164931的博客 687

“华为杯”研究生数学建模竞赛2017年-【华为杯】B题:面向下一代光通信的 VCSEL 激光器仿真模型

得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰值向。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状。方案,包括可能的数学公式,不同温度和偏置电流下的带宽响应曲线,并与问题。线,得出以下主要结论:在相同的偏置电流条件下,随着温度的升高,带宽的峰。在相同的温度下,随着电流的增大,带宽的峰值越小且曲线由波峰形状逐渐变得。得的激光器特性曲线和模型中仿真得到的特性曲线,之后,可以将两组曲线的差。说明的是,由于数值优化算法的成功与否很大程度上依赖于初始参数的猜测,参。

getusushu的博客 99

华为OD机试 新系统真题 【最小代价完成论文评审】

华为OD机试 新系统真题【最小代价完成论文评审】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【最小代价完成论文评审】多语言题解。

qq_45776114的博客 444

存储过程基础(四)通过c#调用存储过程实现查询操作

        本文主要介绍如何通过c#调用自定义存储过程,实现根据ID查询USER表中的记录,并将其结果返回,存放到DataTable中。         为了加深对存储过程的理解,通过两种方式实现上文要求。第一种方式是传统的将sql语句提交到数据库,然后在数据库中对sql语句进行编译、执行,最后返回查询结果。第二种方式是预先定义一个查询的存储过程,然后在c#中将存储过程名提交到数据库,不用经...

NC_star的博客 8470

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 373

【java 操作mysql】java连接mysql数据库并查询数据

做java开发不可避免要处理数据库,所以这里写篇用jdbc来连接mysql的文章, 主要内容包括: 1、java连接mysql 2、java查询mysql数据。 3、java插入mysql数据。 4、java更新mysql数据。 5、java删除mysql数据。 6、java执行mysql存储过程。 ide: IntelliJ IDEA2017 这里必不可少的需要导入mysql-connector

赖德发的博客 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql 存储过程 java代码_【Java】代码调用MySQL存储过程

Java调用MySQL的存储过程,需要用JDBC连接,环境eclipse首先查看MySQL中的数据库的存储过程,接着编写代码调用mysql> show procedure status;+------+-------------+-----------+----------------+---------------------+---------------------+---------...

weixin_35565522的博客 184

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jsp调用mysql存储过程

<%@pagecontentType="text/html;charset=gb2312"%> <%@pagelanguage="java"%> <%@pageimport="com.mysql.jdbc.Driver"%> <%@pageimport="java.sql.*"%> <% //驱动程序名 S...

weixin_33970449的博客 111

IEM模型,地表粗糙度模拟

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

JDBC调用MYSQL分页存储过程(2)

JDBC调用代码:导入mysql jar包,junit包 [code="java"]import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; i...

zxsdnnlxp的博客 157

jsp执行mysql带参数的存储过程

&lt;%@ page contentType="text/html; charset=gb2312" %&gt; &lt;%@ page language="java" %&gt; &lt;%@ page import="com.mysql.jdbc.Driver" %&gt; &lt;%@ page import="java.sql.*" %&gt; &

weixin_33716941的博客 200

jdbc连接数据库示例

java.sql.DriverManager用来装载驱动程序,获取数据库连接。 java.sql.Connection完成对某一指定数据库的联接 java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。 Java.sql.PreparedSatement 用于执行预编译的sql声明 Java.sql.CallableStatement用于执行数据库

用十年代码经验,替你踩平AI落地的坑。 1013

jdbc mysql 存储过程查询数据_java 调用 MySQL 的存储过程 和链接MySQL数据库查询

1 packagecom.function;23 importjava.sql.Connection;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.time.Period;7 importjava.util.ArrayList;8 importjava.util.List;910 importc...

weixin_35067976的博客 125

JDBC调用存储过程与存储函数

在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对象位于java.sql包中,它继承于PreparedStatement对象,PreparedStatement对象又继承于Statement对象。CallableStatement对象主要用于执行数据库中定义的存储过程和存储函数,其调用方法如下: 调用存储过程:{...

pan_junbiao的博客 2万+

【MySQL 数据库】JDBC 编程之 Java 连接 MySQL

文章目录1. 数据库编程的基础条件2. Java 的数据库编程:JDBC3. JDBC 访问数据库的层次结构4. MySQL 数据库操作介绍5. MySQL 驱动包的下载及添加到项目6. JDBC 使用步骤6.1 创建数据库源,连接 Connection6.2 构造 SQL 语句,为执行的操作做准备6.3 执行 SQL,并处理结果集6.4 释放资源6.5 JDBC 编程模板7. JDBC 常用接口和类7.1 DataSource 和 MysqlDataSource7.2 Connection7.3 Prep

吞吞吐吐大魔王的博客 5268

【JDBC】Java连接MySQL数据库

JDBC(Java Database Connectivity)是Java语言用于与关系型数据库进行交互的标志 API。这个 API 由java.sql以及javax.sql包中的一些类和接口组成,使Java应用程序能够通过标准化的方式连接和操作各种不同的数据库。

qq_61635026的博客 1万+

JAVA的JDBC连接MYSQL数据库并查询数据

目录一、使用工具1)MYSQL数据库2)Navicat可视化软件3)IDEA编译java工具二、MYSQL里创建一个数据库1)Navicat连接数据库四、参考链接 一、使用工具 我已经安装过了这些工具了,就不再次展示安装过程了,详细的安装过程下方都有链接,可以自行查看。 1)MYSQL数据库 可在MYSQL官网下载:MYSQL的下载 MYSQL的安装(这个博主写得非常详细):https://blog.youkuaiyun.com/a802976/article/details/119255644 2)Navicat可视

m0_49297422的博客 6897

java(IDEA)连接MySQL数据库并查询数据——JDBC

java链接MySQL数据库,采用JDBC 连接MySQL 数据库并查询数据一、下载二、MySQL安装三、数据库中的操作:创建数据表四、JDBC 连接MySQL 数据库并查询数据五、运行输出小小的总结参考文献 一、下载 下载jar库文件 Java 连接 MySQL 需要驱动包,下载地址为:http://dev.mysql.com/downloads/connector/j/ 下载MySQL 二、MySQL安装 双击运行如下图下载的“mysql-installer-community-8

YouthBlood9的博客 1万+

【JAVA百炼成仙】JDBC连接MYSQL数据库

JDBC如何连接MYSQL数据库

5万+
上一篇: Java代码实现班级通讯录系统(连接mysql数据库)
CrazyCodePlayer..
博客等级 码龄6年 37粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值