【MySQL】JDBC的基础使用

news2024/9/22 11:34:16

系列文章目录

第一章 数据库基础
第二章 数据库基本操作
第三章数据库约束
第四章表的设计
第五章查询进阶
第六章索引和事务


文章目录

  • 系列文章目录
  • 前言
  • 一、JDBC基本概念
  • 二、JDBC的准备工作
  • 三、JDBC-Demo
    • 小结
  • 四、JDBC进阶写法
  • 总结


前言

在前面对MySQL已经有了基本的认知,但是我们是要应用到开发中的,因此需要与Java相结合。即MySQL在Java中的应用。


一、JDBC基本概念

在Java中,使用JDBC这样的技术来操作MySQL。MySQL中提供了一系列的API供程序猿调用。jdbc是Java标准库所提供的,因此是自带的。但是如果要使用JDBC操作MySQL,就需要下载并导入MySQL的驱动包。

二、JDBC的准备工作

以我的MySQL版本(8.0)为例,下载地址为 MySQL驱动包
在下载的驱动包是以.jar结尾的文件。导入到lib包中,即存放第三方库的目录。
在这里插入图片描述

三、JDBC-Demo

在使用jdbc之前,还需要准备好数据库和数据表。虽然jdbc能够进行建表操作,但是一般都是提前创建好的。
1、设置数据库
DataSource:数据源,即要操作的数据库、数据是在哪里,因此在MySQL中需要设定好要访问的数据库名字、访问数据库的用户名和密码。

//使用MySQLDataSource 实现向上转型。
DataSource dataSource = new MysqlDataSource();

url:唯一资源定位符。通过url访问到数据库服务器,进一步进行增删改查。
url包括这么几个信息:IP地址、端口号、数据库名称、编码格式、加密通信(useSSL)


jdbc:mysql://127.0.0.1:3306/blog01?characterEncoding=utf8&useSSL=false

url并不需要强行记忆,使用的时候copy即可。
在jdbc中同样要获取用户名和密码

        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("密码");

2、设置数据源之后,就需要与数据库建立连接,使用Connection类的方法建立连接。

Connection connection = dataSource.getConnection();

3、虽然是通过Java操作数据库,但实际核心还是SQL,只不过是把SQL嵌入到Java中了。因此需要构造SQL语句并发送到数据库服务器上。
在下面我们是构造了一个字符串的SQL语句,通过PreparedStatement的预编译功能对SQL进行解析和校验。

Scanner scanner = new Scanner(System.in);
        System.out.println("请输入id:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        //构造一个sql语句
        String sql = "insert into student2 values(" + id + ",'" + name + "')";
 PreparedStatement preparedStatement=connection.prepareStatement(sql);

preparedStatement类对SQL进行校验,此外它的两种方法为executeUpdate和executeQuery应用场景不同。executeUpdate使用于增删改操作,而executeQuery适用于select操作。
int n 返回的是发生数据改变的行数。

		
		int n = preparedStatement.executeUpdate(sql);
        System.out.println(n);

        //释放资源
        preparedStatement.close();
        connection.close();

小结

在本demo中,涉及到了三个类 DataSource、Connection、PreparedStatement
功能分别为设置数据源、建立连接、创建SQL语句对象。

四、JDBC进阶写法

在jdbc-demo中,我们可以发现这种写法可读性是比较差的。以下面的 sql对象为例,name是字符串类型,因此需要加上’ ’ 而使用拼接而成的字符串又显得晦涩。

String sql = "insert into student2 values(" + id + ",'" + name + "')";

因此,我们有了下面的进阶写法。使用(?,?)进行占位符以备后续代码做出内容替换。
使用preparedStatement预编译对数据进行替换。

Scanner scanner = new Scanner(System.in);
        System.out.print("请输入id:");
        int ids = scanner.nextInt();
        //System.out.println(id);
        System.out.print("请输入姓名:");
        String names = scanner.next();
String sql = "insert into student2 values (?,?) ";

PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,ids);
        preparedStatement.setString(2,names);

总结

JDBC是Java连接和使用数据库的关键技术,它的重复性很高,仍然需要多加练习。
源码JDBC的基础使用

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

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

相关文章

分类预测|基于白鲸优化混合核极限学习机结合Adaboost的数据分类预测Matlab程序BWO-HKELM-Adaboost

分类预测|基于白鲸优化混合核极限学习机结合Adaboost的数据分类预测Matlab程序BWO-HKELM-Adaboost 文章目录 前言分类预测|基于白鲸优化混合核极限学习机结合Adaboost的数据分类预测Matlab程序BWO-HKELM-Adaboost 一、BWO-HKELM-Adaboost模型1. 模型组成1.1 白鲸优化算法&#…

Arco Design,字节跳动出品的UI库

Arco Design是字节跳动出品的UI库,支持Vue和React。还是比较美观的。并且Arco Design还提供了中后台模版。但是通过提供的arco-cli连接了github,正常情况下无法构建。但效果还是挺好的,下面是效果图: 更新: 传送门可…

用C#写一个随机音乐播放器

form1中namespce里的代码如下 public partial class Form1 : Form {public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string folder textBox1.Text;string folderPath folder; // 指定音频文件所在的文件夹路径OpenRandomFi…

C#关于多线程的线程问题

using System.Text; ​ namespace 平时练习8._19day06 {internal class Program{static async Task Main(string[] args){Console.WriteLine(Thread.CurrentThread.ManagedThreadId );StringBuilder sb new StringBuilder();for (int i 0; i < 10000; i){sb.Append("…

嵌入式系统:全面解读与关键要点

嵌入式系统&#xff0c;这个看似专业而遥远的技术词汇&#xff0c;其实早已渗透进了我们日常生活的方方面面。从智能手机到家用电器&#xff0c;再到汽车中的电子控制系统&#xff0c;嵌入式系统无处不在。你是否好奇它们是如何工作的&#xff0c;又有哪些关键点值得我们关注&a…

Android12 显示框架之Transaction----client端

目录&#xff1a;Android显示终极宝典 在前面的章节中&#xff0c;应用通过createSurface()在surfaceflinger中创建了一层layer&#xff0c;紧接着要做的事情就是对这个layer设置一些属性&#xff08;或者叫状态&#xff09;&#xff0c;常设置的属性有位置、大小、z-order等等…

RM悬挂系统

悬挂系统是汽车的车架与车桥或车轮之间的一切传力连接装置的总称&#xff0c;其作用是传递作用在车轮和车架之间的力和力扭&#xff0c;并且缓冲由不平路面传给车架或车身的冲击力&#xff0c;并衰减由此引起的震动&#xff0c;以保证汽车能平稳地行驶。 其主要由减震器和弹簧组…

PictureSelector自定义路径首页不显示数据的问题

1、依赖导入和源码查看 网址&#xff1a;https://github.com/LuckSiege/PictureSelector/tree/version_component 使用PictureSelector 2、自定义路径的实现&#xff1a; 使用方法&#xff1a;setLoaderFactoryEngine进行设置 见[read.md] (https://github.com/LuckSiege/Pi…

C++ wxWidgets图形界面开发用什么IDE最好?

在主流免费的IDE工具中&#xff0c;我们可以想到的支持cmake项目的工具就只有QtCreator&#xff0c;VisualStudio&#xff0c;VSCode这三个。其中QtCreator和VSCode支持WIndows&#xff0c;Mac&#xff0c;WIndows三大主流平台。但是VSCode在Ubuntu等系统下的支持并没有在WIndo…

VMware Esxi 7.0 安装P40显卡疑难杂症小诊断

第一章、小叙 今天安装一台X99主板的机器&#xff0c;操作系统是VMware Esxi 7.0&#xff0c;配备一张P40显卡&#xff0c;显卡已在Esxi硬件中识别到&#xff0c;但是无法安装驱动&#xff0c;安装完驱动之后无法分配给虚拟机&#xff0c;如图所示为识别的硬件。 第二章、安装显…

Spark-SparkSubmit详细过程

一、概览 《Spark-环境启动》中讲了Spark环境的启动&#xff0c;以及Master和多个Worker之间时基于Endpoint之间的Netty通信&#xff0c;也被称为Spark的RpcEnv。在此基础上我们来看下spark-submit是如何将我们写的Spark程序调起的 二、启动脚本示例&#xff1a; spark-subm…

css通过keyframes实现文字定时向上滚动

一、效果 二、代码 <!DOCTYPE html> <html lang="en"><head>

软考软件设计师-备考须知

&#x1f939;‍♀️潜意识起点&#xff1a;个人主页 &#x1f399;座右铭&#xff1a;得之坦然&#xff0c;失之淡然。 &#x1f48e;擅长领域&#xff1a;大前端 是的&#xff0c;我需要您的&#xff1a; &#x1f9e1;点赞❤️关注&#x1f499;收藏&#x1f49b; 是我…

【hot100篇-python刷题记录】【矩阵置零】

R5-矩阵篇 印象题&#xff0c;思路即可&#xff1a; 手动置0 无非就是行和列都置0 使用thex和they将该元素的i和y存储起来&#xff0c;再分别遍历thex&#xff0c;将所有y的位置置0 遍历they&#xff0c;将所有x 置0 class Solution:def setZeroes(self, matrix: List[List…

【机器学习】(基础篇六) —— 数据集的划分和过拟合问题

数据集的划分 训练集和测试集 在机器学习中&#xff0c;数据集通常会被划分为训练集&#xff08;Training Set&#xff09;和测试集&#xff08;Test Set&#xff09;&#xff0c;有时还会包括一个验证集&#xff08;Validation Set&#xff09;。这样的划分是为了能够更好地…

Ⅰ、基于 WebGPU 从 0 到 1 渲染 GLTF:第一个三角形

Ⅰ、基于 WebGPU 从 0 到 1 渲染 GLTF&#xff1a;第一个三角形 WebGPU 是一种面相网页的现代图形 API&#xff0c;由主要浏览器供应商开发。与 WebGL 相比&#xff0c;WebGPU 对 GPU 提供了更直接的控制&#xff0c;使应用程序能更有效地利用硬件&#xff0c;类似于 Vulkan 和…

深度学习设计模式之外观模式

文章目录 前言一、介绍二、特点三、详细分析1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 外观模式是结构型设计模式&#xff0c;定义一个高层接口&#xff0c;用来访问子系统中的众多接口&#xff0c;使系统更加容易使用。 一、介绍 外观设计模式&#xff08…

低代码与AI:赋能企业数字化转型

引言 随着全球经济的快速发展和科技的飞速进步&#xff0c;数字化转型已成为各个行业和企业发展的重要趋势。数字化转型的背景不仅是提升效率和竞争力的手段&#xff0c;更是适应市场变化、满足客户需求的必由之路。 在当今信息化时代&#xff0c;技术的变革推动了企业运营方式…

【Python机器学习】MapReduce(分布式计算的框架)

MapReduce的优缺点&#xff1a; 优点&#xff1a;可在短时间内完成大量工作&#xff1b; 缺点&#xff1a;算法必须经过重写&#xff0c;需要对系统工程有一定的理解&#xff1b; 适用数据类型&#xff1a;数值型和标称型数据。 MapReduce是一个软件框架&#xff0c;可以将单个…

SQL UA注入 (injection 第十八关)

简介 SQL注入&#xff08;SQL Injection&#xff09;是一种常见的网络攻击方式&#xff0c;通过向SQL查询中插入恶意的SQL代码&#xff0c;攻击者可以操控数据库&#xff0c;SQL注入是一种代码注入攻击&#xff0c;其中攻击者将恶意的SQL代码插入到应用程序的输入字段中&a…