用Java操作MySQL

article/2025/8/21 7:33:01

用Java操作MySQL目录

  • 一、创建数据库
    • 1、建库
    • 2、建表
  • 二、开始准备jdbc
    • 1、导入mysql驱动jar包
    • 2、开始写jdbc代码
  • 三、那就运行吧
  • 附:最终代码
    • DBUtil
    • Main
    • db.properties

一、创建数据库

打开Navicat(我用的是DataGrip)的查询控制台

1、建库

sql代码:

create schema StudentManagement;

在这里插入图片描述

2、建表

sql代码:

建立教师表

create table teacher
(t_id int not null primary key auto_increment,t_name varchar(20) not null,t_tel int,t_username varchar(20) not null unique,t_password varchar(20) not null
);

建立学生表

create table student
(s_id int not null primary key auto_increment,s_name varchar(20) not null,s_sex varchar(20) not null check (s_sex in ('男','女')) default '未填写',s_tel int,s_className varchar(20)
);

在这里插入图片描述

二、开始准备jdbc

1、导入mysql驱动jar包

(1)进入Maven网站

(2)搜索框内搜索Java,点击第一个MySQL
在这里插入图片描述
(3)找到你要的那个版本号的jar包,点开它,下载它,我要的是8.20.16版本
在这里插入图片描述
(4)下载它
在这里插入图片描述
(5)把下载好的jar包文件复制粘贴放入你的Java项目内,我放在项目src的zpb.practice.libs文件夹下
在这里插入图片描述
(6)点击项目结构
在这里插入图片描述
(7)然后依次点击模块 -> 依赖 -> +(加号),弹出1 JAR 或目录…,点击它
在这里插入图片描述
(8)进入目录后点击你项目下jar包的位置,点击确定后MySQL驱动jar包即导入了你的项目中,再点击确认,就导入完成。
在这里插入图片描述在这里插入图片描述
(9)成功后你的mysql-connector-java-8.0.16.jar包应该可以像我这样点开
在这里插入图片描述

2、开始写jdbc代码

(1)创建zpb.practice.db文件夹,在里面新建java类DBUtil
在这里插入图片描述
(2)在类里写入下面的代码

package zpb.practice.db;import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 15:11*/
public class DBUtil {//连接信息private static String driverName;private static String url;private static String username;private static String password;//注册驱动,使用静态块,只需注册一次static {//初始化连接信息Properties properties = new Properties();try {properties.load(new FileReader("src/db.properties"));driverName = properties.getProperty("driverName");url = properties.getProperty("url");username = properties.getProperty("username");password = properties.getProperty("password");} catch (IOException e) {e.printStackTrace();}//1、注册驱动try {//通过反射,注册驱动Class.forName(driverName);} catch (ClassNotFoundException e) {e.printStackTrace();}}//jdbc对象private Connection connection = null;private PreparedStatement preparedStatement = null;private ResultSet resultSet = null;//获取连接public void getConnection() {try {//2、建立连接connection = DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}}//更新操作:增删改public int update(String sql, Object[] objs) {int i = 0;try {getConnection();//3、创建sql对象preparedStatement = connection.prepareStatement(sql);for (int j = 0; j < objs.length; j++) {preparedStatement.setObject(j + 1, objs[j]);}//4、执行sql,返回改变的行数i = preparedStatement.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}//查询操作public ResultSet select(String sql, Object[] objs) {try {getConnection();//3、创建sql对象preparedStatement = connection.prepareStatement(sql);for (int j = 0; j < objs.length; j++) {preparedStatement.setObject(j + 1, objs[j]);}//4、执行sql,返回查询到的set集合resultSet = preparedStatement.executeQuery();} catch (SQLException e) {e.printStackTrace();}return resultSet;}//断开连接public void closeConnection() {//5、断开连接if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (preparedStatement != null) {try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}

(3)创建jdbc的java属性文件,这里说明一下,本项目不仅仅是写一个粗糙的jdbc,而是写一个最好的jdbc,创立Java属性文件的好处在于我们将会把jdbc需要的路径,用户名,用户密码写在Java代码之外,一方面是很安全,一方面也方便了你的阅读和修改。
下面单击src,我们直接在src根目录下新建文件
在这里插入图片描述
文件名db.properties,注意这里的文件后缀名为.properties,这种文件可以被Java的Properties类调用,db.properties内写入下面的代码

driverName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/studentmanagement?serverTimezone=Asia/Shanghai
username=root
password=root

这里的四行,从上到下依次是驱动名,MySQL数据库的路径,MySQL用户名,MySQL用户密码。
在这里插入图片描述

三、那就运行吧

1、创建主线程,新建zpb.practice.main文件夹,在内创建main类,创建main方法,代码如下

package zpb.practice.main;import zpb.practice.db.DBUtil;import java.sql.ResultSet;
import java.sql.SQLException;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 16:02*/
public class Main {public static void main(String[] args) {}
}

2、给数据库增加一条数据

package zpb.practice.main;import zpb.practice.db.DBUtil;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 16:02*/
public class Main {public static void main(String[] args) {DBUtil db = new DBUtil();//更新操作(增加数据)Object[] obj = {null, "乔布斯", "2243736958", "Apple", "root"};int i = db.update("insert into teacher values(?,?,?,?,?)", obj);System.out.println(i);db.closeConnection();}
}

3、查询一下是否添加成功

package zpb.practice.main;import zpb.practice.db.DBUtil;import java.sql.ResultSet;
import java.sql.SQLException;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 16:02*/
public class Main {public static void main(String[] args) {DBUtil db = new DBUtil();//更新操作(增加数据)//Object[] obj = {null, "乔布斯", "2243736958", "Apple", "root"};//int i = db.update("insert into teacher values(?,?,?,?,?)", obj);//System.out.println(i);//db.closeConnection();//查询操作Object[] objs = {};ResultSet set = db.select("select * from teacher", objs);try {while (set.next()) {int t_id = set.getInt("t_id");String t_name = set.getString("t_name");String t_tel = set.getString("t_tel");String t_username = set.getString("t_username");String t_password = set.getString("t_password");System.out.println(t_id + " " + t_name + " " + t_tel + " " + t_username + " " + t_password);}} catch (SQLException e) {e.printStackTrace();}db.closeConnection();}
}

运行后,你的控制台内将显示你刚刚插入的那条数据(乔布斯)。

附:最终代码

DBUtil

package zpb.practice.db;import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 15:11*/
public class DBUtil {//连接信息private static String driverName;private static String url;private static String username;private static String password;//注册驱动,使用静态块,只需注册一次static {//初始化连接信息Properties properties = new Properties();try {properties.load(new FileReader("src/db.properties"));driverName = properties.getProperty("driverName");url = properties.getProperty("url");username = properties.getProperty("username");password = properties.getProperty("password");} catch (IOException e) {e.printStackTrace();}//1、注册驱动try {//通过反射,注册驱动Class.forName(driverName);} catch (ClassNotFoundException e) {e.printStackTrace();}}//jdbc对象private Connection connection = null;private PreparedStatement preparedStatement = null;private ResultSet resultSet = null;//获取连接public void getConnection() {try {//2、建立连接connection = DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}}//更新操作:增删改public int update(String sql, Object[] objs) {int i = 0;try {getConnection();//3、创建sql对象preparedStatement = connection.prepareStatement(sql);for (int j = 0; j < objs.length; j++) {preparedStatement.setObject(j + 1, objs[j]);}//4、执行sql,返回改变的行数i = preparedStatement.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}//查询操作public ResultSet select(String sql, Object[] objs) {try {getConnection();//3、创建sql对象preparedStatement = connection.prepareStatement(sql);for (int j = 0; j < objs.length; j++) {preparedStatement.setObject(j + 1, objs[j]);}//4、执行sql,返回查询到的set集合resultSet = preparedStatement.executeQuery();} catch (SQLException e) {e.printStackTrace();}return resultSet;}//断开连接public void closeConnection() {//5、断开连接if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (preparedStatement != null) {try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}

Main

package zpb.practice.main;import zpb.practice.db.DBUtil;import java.sql.ResultSet;
import java.sql.SQLException;/*** @author Peter Cheung* @user PerCheung* @date 2021/8/22 16:02*/
public class Main {public static void main(String[] args) {DBUtil db = new DBUtil();//更新操作(增加数据)//Object[] obj = {null, "乔布斯", "2243736958", "Apple", "root"};//int i = db.update("insert into teacher values(?,?,?,?,?)", obj);//System.out.println(i);//db.closeConnection();//查询操作Object[] objs = {};ResultSet set = db.select("select * from teacher", objs);try {while (set.next()) {int t_id = set.getInt("t_id");String t_name = set.getString("t_name");String t_tel = set.getString("t_tel");String t_username = set.getString("t_username");String t_password = set.getString("t_password");System.out.println(t_id + " " + t_name + " " + t_tel + " " + t_username + " " + t_password);}} catch (SQLException e) {e.printStackTrace();}db.closeConnection();}
}

db.properties

driverName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/studentmanagement?serverTimezone=Asia/Shanghai
username=root
password=root

http://chatgpt.dhexx.cn/article/UvyJjPUT.shtml

相关文章

c++ opencv 身份证OCR识别:前期数据训练库准备(tesseractOCR)

前言&#xff1a;本文已经在个人博客更新排版和讲解【传送门】 整个教程已经在有道云写好了&#xff0c;在博客要重新把每个图片再上传一次有点累&#xff0c;先截了图直接看吧&#xff01;如果有需要有提供word版本可以下载 https://download.csdn.net/download/stopping5/11…

身份证正反面识别,身份证扫描识别,二代身份证OCR识别,OCR极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。

项目说明 极速识别二代身份证、驾驶证、护照 (无需联网&#xff0c;离线秒扫&#xff0c;极速识别)身份证所有信息, 包含姓名、性别、出生年月、详细地址&#xff0c;正反面。不需要联网即可离线识别身份证所有信息包括新疆少数民族身份证&#xff0c;识别速度快&#xff0c;识…

如何对接身份证OCR?

【身份证OCR文字识别】身份证OCR识别-身份证识别-身份证-OCR文字-身份证OCR文字-身份证OCR-身份证OCR图像识别【最新版】_图像识别_身份证识别_OCR-云市场-阿里云 身份证OCR免费体验 Java代码如下 public static void main(String[] args) {String host "https://idcar…

实名二代身份证OCR识别

在银行、信用社、航空、保险、电信等部门单位办理手续或证件时&#xff0c;常需要身份证件&#xff0c;但业务人员手工录入速度慢、办公效率太低是一大亟需解决的问题&#xff0c;通常要先通过扫描或拍照&#xff0c;来获取身份证上面的头像&#xff0c;然后再手工填写用户的身…

Opencv实现身份证OCR识别

Opencv 配置IDEA可参考&#xff1a;https://blog.csdn.net/zwl18210851801/article/details/81075781 opencv位置&#xff1a; OpencvUtil类&#xff1a; package com.x.common.utils;import org.opencv.core.*; import org.opencv.core.Point; import org.opencv.imgcodecs.…

身份证OCR实名认证接口

人工智能&#xff0c;身份证&#xff0c;OCR实名验证 一、接口介绍 自动识别及快速提取二代居民身份证正反面所有字段&#xff0c;包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限&#xff0c;实时联网核查校验是否一致。对URL网络图片或base64信息进行…

身份证OCR识别SDK

一、身份证OCR识别SDK应用背景 随着Android、IOS智能手机的普及&#xff0c;5G通信技术的发展&#xff0c;移动互联迎来了爆发式增长&#xff0c;越来越多的公司都推出了自己的移动APP、小程序等应用。这些应用多数都涉及到个人身份证信息的输入认证&#xff08;即实名认证&…

阿里云智能身份证OCR文字识别

智能身份证OCR文字识别 做的项目里面涉及到了身份证识别输入的真实姓名与身份证号码是否匹配功能&#xff0c;于是在阿里云接了智能身份证OCR文字识别API&#xff0c;登录阿里云找到对应的产品&#xff0c;如下图 购买使用然后生成对应的APPcode。 使用的demo有蛮多&#xff0c…

如何用 身份证OCR 接口进行快速开发

最近公司项目有一个身份证文字识别的小需求&#xff0c;想着如果用现成的API就可以大大提高开发效率&#xff0c;在网上的API商店搜索了一番&#xff0c;发现了 APISpace&#xff0c;它里面的身份证OCR非常符合我的开发需求。 身份证OCR&#xff0c;传入身份证照片&#xff0c…

离线身份证OCR识别

离线身份证ocr识别简介 离线身份证ocr识别SDK可支持Android、iOS主流移动操作系统&#xff0c;android平台提供jar包&#xff0c;ios提供静态库.a文件。APP集成离线身份证ocr识别SDK后&#xff0c;用户采用手机、平板电脑对身份证进行拍摄识别即可自动识别身份证信息。 离线身…

身份证OCR识别

本文章来源于自己的学习图像处理以及识别过程中的一些经验&#xff0c;开发了一个OCR识别身份证程序&#xff0c;此程序虽不够完美但有一定的参考价值&#xff0c;CSDN上本人也将提供源代码&#xff0c;对身份证OCR识别整个过程的一个梳理。 程序依赖库&#xff0c;OpenCV3.20…

4款堪称手机神器的APP,每个都可以玩转手机,尤其是第三个

每个人的手机中都会一到两个永远不会卸载的APP&#xff0c;有些APP可以让你在工作中事半功倍&#xff0c;有些可以让你打发时间&#xff0c;并且还可以学习到不同的知识。下面就为大家介绍几个即可以娱乐还可以学习的APP。 一周计划 对于记忆力不好的小伙伴&#xff0c;可以在…

安卓手机软件开发_安卓最牛的下载神器,快收藏起来自己偷偷用

小编一直在想&#xff0c;有木有一款安卓手机电影下载神器让用户在一个手机 App 软件里&#xff0c;既能播放 BT 文件&#xff0c;又能下载网盘文件呢&#xff1f; 谁又不想要一个迅雷百度云网盘资源网站&#xff0c;三合一的手机电影下载神器呢&#xff1f; 其实小编很早就注意…

电脑复制手机粘贴神器-快贴使用方法

首先电脑下载快贴&#xff1a;https://home.clipber.com/index.html?styleorange 然后手机应用市场下载app:快贴&#xff08;安卓苹果都可以下载&#xff09; 回到电脑上把下载的软件安装好&#xff0c;用邮件注册登录&#xff0c;设置&#xff1a; 第二步点右下角任务栏 快…

android代码让手机降温,手机降温神器下载 手机一键降温神器 for Android v1.0.1 安卓版 下载-脚本之家...

对于经常使用手机的朋友来说&#xff0c;肯定手机会非常烫&#xff0c;如果手机持续高温的话就会降低电池的生命周期&#xff0c;所以&#xff0c;为手机降温是非常有必要的。今天小编带来了这款手机一键降温神器就不错&#xff0c;这是一款可以帮助用户快速降低手机温度的工具…

安卓手机垃圾清理神器!彻底清理你的手机垃圾!手机瞬间飞起来!

使用安卓手机的小伙伴经常会遇到一个令人头疼的问题“手机时间一久&#xff0c;各种缓存数据和垃圾文件会越来越多&#xff0c;不及时清理的话&#xff0c;不见占用储存空间&#xff0c;而且还会拖慢手机的运行速度”&#xff0c;大家可能使用过很多垃圾清理软件&#xff0c;清…

android wear阅读器,手机软件有哪些神器?

根据使用场景分类吧&#xff0c;给大家介绍几款私藏的神器&#xff1a; 一、久坐提醒&#xff0c;健康第一 如今&#xff0c;越来越多的事情可以在电脑上完成&#xff0c;学生族和办公族们&#xff0c;一不小心就会在电脑前坐上整一天。久坐带来的一个最直接感受&#xff0c;就…

手机最强Python编程神器,在手机上运行Python

手机编程软件有很多&#xff0c;大部分都很难使用&#xff0c;操作不灵活&#xff0c;甚至不能安装第三方库。 尝试安装了很多Python移动编程软件&#xff0c;发现了很多问题&#xff0c;不是编码效率低就是各种bug。今天&#xff0c;来自一位python编程小哥指导&#xff0c;向…

BatteryHistorian Android手机耗电分析神器

Battery-Historian是谷歌推出的一款专门分析Bugreport的工具&#xff0c;是谷歌2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具&#xff0c;是一款对于分析手机状态&#xff0c;历史运行情况很好的可视化分析工具。 当…

推荐一款手机app自动点击神器

点击上方"优派编程"选择“加入星标”&#xff0c;第一时间关注原创干货 工具软件下载地址&#xff1a;http://wp.fang1688.cn/ganhuo/931.html 今天小编方包介绍这款app自动点击神器&#xff1a;贝利自动点击器 贝利自动点击器安卓版是一款免费的手机自动连点器,用户…