JDBC编程的学习——MYsql版本

news2024/11/15 18:56:07

目录

前言

什么是JDBC ???

前置准备

使用JDBC的五个关键步骤

1.建立与数据库的连接

2.创建具体的sql语句和Statement

3.执行SQL语句

4.处理结果集

5.释放资源

完整流程展示


前言

笔者在先前的博客就提过会写关于JDBC的内容

[Mysql] 的基础知识和sql 语句.教你速成(上)——逻辑清晰,涵盖完整-CSDN博客

作为一个初学者,JDBC很大程度上解决了我之前的困惑——应用程序是怎么和数据库关联起来的

在本文中,我以先前分享过的图书管理系统为例子,来向大家初步介绍如何使用JDBC

图书管理系统(java) 代码展示和思路介绍 (9000字小长文)_图书管理系统关键代码展示-CSDN博客

什么是JDBC ???

JDBC ,即 Java Database Connectivity java 数据库连接。
是一种用于执行 SQL 语句的 Java API ,它是 Java中的数据库连接规范。
这个 API java.sql.*,javax.sql.* 包中的一些类和接口组成,
它为 Java 开发人员操作数据库提供了一个标准的API ,可以为多种关系数据库提供统一访问。
JDBC提供了一个统一的接口,使得Java应用程序可以与任何支持JDBC标准的关系型数据库进行交互,无需关心具体的数据库实现细节。这种平台无关性使得开发的应用程序可以轻松地在不同的数据库系统上运行。
话句话说,通过使用JDBC以及它升级过的版本,我们就可以用相对低的知识成本,使JAVA程序连接数据库
在之前的图书管理系统中笔者就说过,程序的缺陷就是没法长期保存数据,一旦程序执行结束,数据就会丢失,因此,我们可以将它写入我们的MYsql数据库中,长期保存.

前置准备

1.下载好驱动包

2.创建好项目以后,再创建目录存放驱动包,并且设置为library

具体操作可以看我另一篇博客

图文讲解IDEA如何导入JDBC驱动包-CSDN博客

使用JDBC的五个关键步骤

1.建立与数据库的连接

在Java中创建一个数据源(DataSource)对象,并实例化为MySQL数据库的数据源(MysqlDataSource) (向上转型)

然后设置好 URL  User 和Password   

其中关于URL 说明如下:

URL(Uniform Resource Locator,统一资源定位符)是用于标识和定位互联网上资源的地址。它是一个字符串,描述了资源的位置和访问方式

URL是互联网中标准的资源定位方式,用于浏览器访问网页、下载文件、发送请求等操作。在编程中,通过URL可以指定需要访问的网络资源,进行网络通信和数据传输。

同时呢,代码如下

  DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jsh?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("你的数据库密码");

关于URL,作为我们自己练习来说,127.0.0.1 是一个回环IP地址 ,3306是我们的端口号, jsh在这代表连接哪个数据库,基本都是默认的,直接复制即可(除了连接什么数据库自己定)

然后建立连接

 Connection connection=dataSource.getConnection();

2.创建具体的sql语句和Statement

这里就要考验你的sql语句是否扎实了

举例来说

我们要写一个sql命令,它的数据类型是String

 String sql="insert into lib (name,author,price,type,state)values(?,?,?,?,default)";
default 是默认值,这么什么好说的,你肯定会疑惑?是什么
这里的?是占位符,便于我们在程序中输入数据以填充
我们以增加图书这个命令来看,代码如下
     System.out.println("增加图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入您要添加的图书的书名:");
        String name = scanner.nextLine();
        System.out.println("请输入您要添加的图书的作者名:");
        String author = scanner.nextLine();
        System.out.println("请输入您要添加的图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入您要添加的图书的价格:");
        int price = scanner.nextInt();
        String sql="insert into lib (name,author,price,type,state)values(?,?,?,?,default)";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
         preparedStatement.setString(1,name);
        preparedStatement.setString(2,author);
        preparedStatement.setInt(3,price);
        preparedStatement.setString(4,type);

在写好我们的命令以后,创建 PreparedStatement,它的作用是将sql语句传到数据库当中,

它也给了我们一组方法,可以手动输入数据去替换我们的占位符(?)

在方法中,左边的数字代表问好的位置,右边的标识符代表我们要替换的数据

3.执行SQL语句

现在,我们已经建立好连接,写好了命令,现在就需要他执行!

执行也有两种方法,分别去应用广义上的写(包括修改增加删除)和查询

 int n=preparedStatement.executeUpdate();

 这里我们以"写"作为例子去看

    int executeUpdate() throws SQLException;

 可以看到这是一个 int 方法,我们用n去接收,来查看有几条命令执行了

4.处理结果集

如果是查询操作,通常会有结果集,但这里我们就不细说了,到时候看案例就知道了

5.释放资源

顺序通常是释放最后调用的对象

 preparedStatement.close();
        connection.close();

完整流程展示

这里给大家看个大概的流程

     //1 创建
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jsh?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("你的密码");

        //2 建立链接
      Connection connection=dataSource.getConnection();

      //3 创建sql语句
        System.out.println("增加图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入您要添加的图书的书名:");
        String name= scanner.nextLine();
        System.out.println("请输入您要添加的图书的作者名:");
        String author = scanner.nextLine();
        System.out.println("请输入您要添加的图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入您要添加的图书的价格:");
        int price = scanner.nextInt();
        String sql="insert into lib (name,author,price,type,state)values(?,?,?,?,default)";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
         preparedStatement.setString(1,name);
        preparedStatement.setString(2,author);
        preparedStatement.setInt(3,price);
        preparedStatement.setString(4,type);

        //4 发送给服务器
        int n=preparedStatement.executeUpdate();

        //5 释放资源

        preparedStatement.close();
        connection.close();

具体案例更新在下篇

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

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

相关文章

python怎么调用cmd命令

关于python调用cmd命令: 1、python的OS模块 OS模块调用CMD命令有两种方式:os.popen()、os.system()都是用当前进程来调用。 OS.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig"). OS.…

Invoice OCR

Invoice OCR 发票识别 其他类型ORC: DIPS_YTPC OCR-CSDN博客

【AI大模型】检索增强生成(RAG)模型在企业中的应用

彩蛋 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势,比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等,但是在国内使用GPT4存在网络及充值障碍等问题,如果您对ChatGPT4.0感兴趣,可以私信博主为您解决账号和环境…

基于Make的c工程No compilation commands found报错

由于安装gcc时只安装了build-essential,没有将其添加到环境变量中,因此打开Make工程时,CLion会产生如下错误: 要解决这个问题,一个方法是将GCC添加到环境变量中,但是这个方法需要修改至少两个配置文件&…

校园外卖系统带万字文档在线外卖管理系统java项目java课程设计java毕业设计

文章目录 校园外卖系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档(9.9¥带走) 校园外卖系统 一、项目演示 校园外卖服务系统 二、项目介绍 语言:java 数据库&…

MySQL实现数据备份的方式可以基于哪几种?

MySQL 数据库实现数据备份的方式主要有以下几种: 物理备份 (Physical Backup): 冷备份 (Cold Backup):在数据库关闭的情况下,直接复制数据库文件(数据文件、日志文件等)。这种方式操作简单,但是…

pd虚拟机去虚拟化是什么意思?pd虚拟机去虚拟化教程 PD虚拟机优化设置

Parallels Desktop for Mac(PD虚拟机)去虚拟化是指在虚拟机(Virtual Machine,简称 VM)中禁用或减少虚拟化层的影响,使其表现更接近于物理机。这种操作通常用于提高虚拟机的性能或解决某些软件兼容性问题。具…

【BUG】Python3|COPY 指令合并 ts 文件为 mp4 文件时长不对(含三种可执行源代码和解决方法)

文章目录 前言源代码FFmpeg的安装1 下载2 安装 前言 参考: python 合并 ts 视频(三种方法)使用 FFmpeg 合并多个 ts 视频文件转为 mp4 格式 Windows 平台下,用 Python 合并 ts 文件为 mp4 文件常见的有三种方法: 调用…

系统数据加密传输的实现

文章目录 1、背景2、需求3、实现思路3.1 密码加密3.2 密码解密3.3 nacos密码加密 4、相关工具类4.1 非对称加密RSA4.2 对称加密AES4.3 Nacos加解密的实现:Jasypt 5、历史数据兼容处理 1、背景 用户在浏览器发送请求数据到后台系统,期间数据在网络传输&a…

osgverse浏览器端编译

目录 1 WSL安装(Windows subsystem for Linux)2 emsdk准备3 SetUp.sh安装(osgverse源码目录下)4 显示与问题 内容 WSL安装(Windows subsystem for Linux) 安装wsl:wsl --install 将版本设置为wsl1(因为版本2比版本1慢很多):wsl --set-version ubuntu 1…

防火墙基础实验配置

一,实验拓扑 二,实验需求: 1.DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问 2.生产区不允许访问互联网,办公区…

迂回战术:“另类“全新安装 macOS 15 Sequoia beta2 的极简方法

概述 随着 WWDC 24 的胜利闭幕,Apple 平台上各种 beta 版的系统也都“跃跃欲出”,在 mac 上自然也不例外。 本次全新的 macOS 15 Sequoia(红杉)包含了诸多重磅升级,作为秃头开发者的我们怎么能不先睹为快呢&#xff1…

什么是边缘计算?创造一个更快、更智慧、更互联的世界

前言 如今,数十亿物联网传感器广泛部署在零售商店、城市街道、仓库和医院等各种场所,正在生成大量数据。从这些数据中更快地获得洞察,意味着可以改善服务、简化运营,甚至挽救生命。但要做到这一点,企业需要实时做出决策…

网络协议 — Keepalived 高可用方案

目录 文章目录 目录Keepalived 是实现了 VRRP 协议的软件Keepalived 的软件架构VRRP StackCheckersKeepalived 的配置Global configurationvrrp_scriptVRRP Configurationvrrp synchroization groupvrrp instancevirtual ip addressesvirtual routesLVS Configurationvirtual_s…

Day06-角色管理-员工管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.编辑角色-进入行内编辑2.角色管理-行内编辑-数据缓存3.角色管理-编辑角色-确定取消4.角色管理-删除角色员工管理-页面结构6.员工管理-左侧树7.员工管理-选中首个节…

昇思学习打卡-14-ResNet50迁移学习

文章目录 数据集可视化预训练模型的使用部分实现 推理 迁移学习:在一个很大的数据集上训练得到一个预训练模型,然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。本章学习使用的是前面学过的ResNet50,使用迁移学…

JAVA之开发神器——IntelliJ IDEA的下载与安装

一、IDEA是什么? IEAD是JetBrains公司开发的专用于java开发的一款集成开发环境。由于其功能强大且符合人体工程学(就是更懂你)的优点,深受java开发人员的喜爱。目前在java开发工具中占比3/4。如果你要走java开发方向,那…

985研究生8年终毕业,学位证颁发11天后被作废?

“正常是学校颁证给学院,但学院就没告诉我,还把学校颁发的证书给撤销了,这中间学院并没有书面或电话告知我本人。”34岁读研,如今已42岁的内蒙古任女士回想起求学不易,很是心酸。 2015年3月,任女士考取2015…

Python酷库之旅-第三方库Pandas(014)

目录 一、用法精讲 34、pandas.DataFrame.to_parquet函数 34-1、语法 34-2、参数 34-3、功能 34-4、返回值 34-5、说明 34-6、用法 34-6-1、数据准备 34-6-2、代码示例 34-6-3、结果输出 35、pandas.read_sql_table函数 35-1、语法 35-2、参数 35-3、功能 35-4…

【Neo4j】实战 (数据库技术丛书)学习笔记

Neo4j实战 (数据库技术丛书) 第1章演示了应用Neo4j作为图形数据库对改进性能和扩展性的可能性, 也讨论了对图形建模的数据如何正好适应于Neo4j数据模型,现在到了该动 手实践的时间了。第一章 概述 Neo4j将数据作为顶点和边存储(或者用Neo4j术语,节点和关系存 储)。用户被定…