文章目录

  • 前言
  • 一、环境准备
    • 1.1 系统更新
    • 1.2 Java环境安装
    • 1.3 MySQL数据库安装
    • 1.4 下载JDBC驱动
  • 二、编写Java程序
    • 2.1 代码如下
    • 2.2 编译和运行
    • 2.3 验证创建结果
  • 三、代码上传至Gitee
    • 3.1 安装配置Git
    • 3.2 克隆仓库到本地
    • 3.3 添加Java项目文件
    • 3.4 提交代码到本地仓库
    • 3.5 推送到Gitee远程仓库


前言

本文将详细介绍在CentOS系统上从零开始搭建Java开发环境,安装配置MySQL数据库,到最终编写并运行Java程序连接数据库的全过程。这是一个面向初学者的完整实践指南。(培训时的小作业,因不想在自己电脑上装java开发环境,特Linux测试)


一、环境准备

1.1 系统更新

# 安装必要工具
sudo yum update -y
sudo yum install -y wget vim git

1.2 Java环境安装

sudo yum install -y java-11-openjdk-devel
# 验证安装
java -version
# 设置JAVA_HOME
echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))" >> ~/.bashrc
source ~/.bashrc

1.3 MySQL数据库安装

方法 1:安装 MariaDB(推荐)
MariaDB 是 MySQL 的兼容替代品,CentOS Stream 9 官方仓库直接提供

# 1. 安装 MariaDB 服务器
sudo dnf install mariadb-server# 2. 启动服务并设置开机自启
sudo systemctl enable --now mariadb# 3. 安全初始化(设置 root 密码等)
sudo mysql_secure_installation

方法 2:安装官方 MySQL 8.0

# 1. 下载 MySQL 官方仓库包
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm# 2. 验证 GPG 密钥(如报错)
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 3. 禁用默认的 MySQL 模块(CentOS Stream 9 特有步骤)
sudo dnf module disable mysql# 4. 安装 MySQL 服务器
sudo dnf install mysql-community-server# 5. 启动服务
sudo systemctl enable --now mysqld# 6. 获取临时 root 密码
sudo grep 'temporary password' /var/log/mysqld.log# 7. 安全配置
sudo mysql_secure_installation# 检查版本
mysql --version# 登录 MySQL(使用设置的 root 密码)
mysql -u root -p#-- 创建用户并授权
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;

1.4 下载JDBC驱动

# 创建项目目录
mkdir jdbc-project
cd jdbc-project# 下载MySQL JDBC驱动
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz# 解压并复制jar文件
tar -xzf mysql-connector-java-8.0.28.tar.gz
cp mysql-connector-java-8.0.28/mysql-connector-java-8.0.28.jar .

二、编写Java程序

2.1 代码如下

import java.sql.*;public class CreateDatabaseAndTable {public static void main(String[] args) {// 第一步:连接到MySQL服务器(不指定具体数据库)String serverUrl = "jdbc:mysql://localhost:3306?useSSL=false&serverTimezone=Asia/Shanghai";String username = "jdbc_user";String password = "***@***";String databaseName = "xinghuo07";String tableName = "test07";try (Connection conn = DriverManager.getConnection(serverUrl, username, password);Statement stmt = conn.createStatement()) {// 1. 创建数据库stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS " + databaseName + " CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");System.out.println("数据库创建成功");// 2. 切换到新创建的数据库stmt.executeUpdate("USE " + databaseName);// 3. 创建表String createTableSql = "CREATE TABLE IF NOT EXISTS " + tableName + " (" +"id INT AUTO_INCREMENT PRIMARY KEY, " +"name VARCHAR(50) NOT NULL, " +"money DECIMAL(10,2) DEFAULT 0.00" +") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";stmt.executeUpdate(createTableSql);System.out.println("表创建成功");// 4. 插入测试数据String insertSql = "INSERT INTO " + tableName + " (name, money) VALUES " +"('张三', 1000.50), " +"('李四', 2000.75), " +"('王五', 3000.00)";stmt.executeUpdate(insertSql);System.out.println("测试数据插入成功");} catch (SQLException e) {System.err.println("数据库操作失败:");e.printStackTrace();// 特殊处理"未知数据库"错误if (e.getErrorCode() == 1049) { // 1049是"未知数据库"的错误代码System.err.println("\n提示:请确保先创建数据库或使用有权限创建数据库的用户");}}}
}

2.2 编译和运行

# 编译
javac -cp mysql-connector-java-8.0.28.jar CreateDatabaseAndTable.java# 运行
java -cp .:mysql-connector-java-8.0.28.jar CreateDatabaseAndTable

2.3 验证创建结果

#验证连接
mysql -u jdbc_user -p******** -e "SHOW DATABASES;"
#验证创建结果
mysql -u root -p****** -e "SHOW DATABASES; USE xinghuo07; SHOW TABLES; DESC test07; SELECT * FROM test07;"

在这里插入图片描述

三、代码上传至Gitee

3.1 安装配置Git

#安装Git
sudo yum install -y git
# 配置Git全局信息
git config --global user.name "lihui189"
git config --global user.email "您的邮箱@example.com"

3.2 克隆仓库到本地

在这里插入图片描述

git clone https://gitee.com/lihui189/JdbcTest.git
cd JdbcTest 

在这里插入图片描述

3.3 添加Java项目文件

在这里插入图片描述

# 创建src和lib目录(如果不存在)
mkdir -p src lib
# 移动Java文件到src目录
mv ../CreateDatabaseAndTable.java src/
# 移动MySQL驱动到lib目录
mv ../mysql-connector-java-8.0.28.jar lib/

创建README.md

cat > README.md <<EOF
# JDBC测试项目## 功能说明
- 使用JDBC连接MySQL数据库
- 演示事务操作
- 包含数据插入、更新和查询功能## 运行要求
- Java 11+
- MySQL 8.0+## 编译运行
\`\`\`bash
javac -cp lib/mysql-connector-java-8.0.28.jar src/CreateDatabaseAndTable.java
java -cp src:lib/mysql-connector-java-8.0.28.jar CreateDatabaseAndTable
\`\`\`
EOF

3.4 提交代码到本地仓库

cd JdbcTest
# 添加所有文件
git add .
# 提交更改
git commit -m "添加JDBC测试项目初始代码"
---

3.5 推送到Gitee远程仓库

git push origin master
#首次推送时需要输入Gitee账号密码:

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM面试12

讯飞算法工程师面试题 SVM核函数能否映射到无穷维 可以的&#xff0c;多项式核函数将低维数据映射到高维&#xff08;维度是有限的&#xff09;&#xff0c;而高斯核函数可以映射到无穷维。由 描述下xgb原理&#xff0c;损失函数 首先需要说一说GBDT,它是一种基于boosting增强…

类加载生命周期与内存区域详解

类加载生命周期与内存区域详解 Java 类加载的生命周期包括加载、验证、准备、解析、初始化五个阶段&#xff0c;每个阶段在内存中的存储区域和赋值机制各有不同。以下是详细解析&#xff1a; 一、类加载生命周期阶段 1. 加载&#xff08;Loading&#xff09; 内存区域&…

正交视图三维重建2 笔记 2d线到3d线2 先生成3d线然后判断3d线在不在

应该先连线再判断线在不在 if(fx1tx1&&tx1tx2){ const A[fx1, fy1, ty1];const Ahat[fx1, fy1, ty2];drawlines(A[0], A[1], A[2], Ahat[0], Ahat[1], Ahat[2], lineId, type,2);}if(fx2tx1&&tx1tx2){ const B[fx2, fy2, ty1];const Bhat[fx2, fy2, ty2];drawl…

Hibernate对象生命周期全解析

Hibernate对象生命周期详解 Hibernate作为Java领域主流的ORM框架,其核心机制之一就是对持久化对象生命周期的管理。理解Hibernate对象生命周期对于正确使用Hibernate进行数据持久化操作至关重要。Hibernate将对象分为三种主要状态:瞬时态(Transient)、持久态(Persistent)和游…

MCP 协议使用核心讲解

&#x1f4c4; MCP 协议使用核心讲解 ✅ MCP 协议的核心在于以下几个方面 一、MCP 请求结构&#xff08;MCPRequest&#xff09; {"messages": [{"role": "user","content": "帮我查询一下上海的天气"}],"tools"…

云计算中的几何方法:曲面变形的可视化与动画-AI云计算数值分析和代码验证

着重强调微分方程底层的几何和代数结构&#xff0c;以进行更深入的分析和求解方法。开发结构保持的数值方法&#xff0c;以在计算中保持定性特征。统一符号和数值方法&#xff0c;实现有效的数学建模。利用几何解释&#xff08;如双曲几何&#xff09;求解经典微分方程。利用计…

OpenCV篇——项目(一)OCR识别读取银行卡号码

目录 信用卡数字识别系统&#xff1a;前言与代码解析 前言 项目代码 ​​​​​​结果演示 代码模块解析 1. 参数解析模块 2. 轮廓排序函数 3. 图像预处理模块 4. 输入图像处理流程 5. 卡号区域定位 6. 数字识别与输出 系统优势 信用卡数字识别系统&#xff1a;前言…

Adobe AI高效设计秘籍与创新思维进阶

开篇&#xff1a;十年设计征途&#xff0c;Adobe赋能创意飞翔 作为一名在设计领域耕耘十年的旅居职业设计师&#xff0c;我得益于英国帕维斯经济与音乐学院&#xff08;Parvis School of Economics and Music&#xff09;提供的Adobe正版教育订阅&#xff0c;得以持续探索技术…

vc formal实例

命令&#xff1a; module load gui 方式启动命令&#xff0c; 看一下cc_pinmux.tcl 里面有什么&#xff1a; 工具feature 的设置&#xff0c;不太懂 对特定模块做blackbox, library file, 一般是工具无法识别的模块&#xff0c;例如 IO lib,memory lib,analog lib, 内部有 …

JavaScript取值get的json/url/普通对象参考

dstore.on(datachanged,function(dstore){ for(i0;i<dstore.getCount();i){ var a dstore.getAt(i); var imp_infoa.get(imp_info); 上面这段JS代码&#xff0c;imp_info取到的是一长串KEY和VALUE组成的内容&#xff0c;我怎样可以准确获取其中一…

【C++】侦测按键事件

侦测按键事件可以用C的conio.h头文件&#xff0c;用到的函数&#xff1a; _CRTIMP int __cdecl _getch(void); 输入以下代码&#xff1a; #include <iostream> #include <conio.h> using namespace std;int main() {char key;while (true) {cout << "…

Coremail受邀亮相华为开发者大会

6月20-22日&#xff0c;为期三天的HDC.2025华为开发者大会在东莞举行&#xff0c;全球超过1.2万名开发者汇聚现场&#xff0c;聚焦鸿蒙生态、AI技术及产业合作。Coremail作为鸿蒙生态的核心伙伴和深度参与者受邀出席&#xff0c;并获得“智慧办公最佳产品合作伙伴”奖项。 HDC.…

视频断点续播全栈实现:基于HTML5前端与Spring Boot后端

文章目录 视频断点续播功能实现方案核心思路前端实现HTML结构JavaScript实现Spring Boot后端实现1.依赖配置(pom.xml)2.实体类3.存储库接口4.服务层5. 控制器实现要点视频断点续播功能构思图流程说明用户交互:前端核心功能:后端处理:数据存储:🌐 我的个人网站:乐乐主题创…

华为设备 QoS 流分类与流标记深度解析及实验脚本

一、引言 在复杂网络环境中&#xff0c;不同业务对网络质量需求各异。语音通话要求低时延、视频直播依赖高带宽、普通文件传输对丢包容忍度相对较高 。QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;技术通过流分类、流标记等手段&#xff0c;为不同业务…

[论文阅读] 人工智能 + 软件工程 | 从软件工程视角看大语言模型:挑战与未来之路

从软件工程视角看大语言模型&#xff1a;挑战与未来之路 论文标题&#xff1a;Software Engineering for Large Language Models: Research Status, Challenges and the Road Ahead arXiv:2506.23762 Software Engineering for Large Language Models: Research Status, Chall…

【Docker基础】Docker容器管理:docker rm及其参数详解

目录 1 Docker容器生命周期概述 2 docker rm命令基础 2.1 命令基本语法 2.2 命令功能说明 2.3 基本使用示例 3 docker rm参数详解 3.1 -f, --force 3.2 -v, --volumes 3.3 -l, --link 3.4 --time 4 docker rm高级用法 4.1 批量删除容器 4.1.1 删除所有已停止的容器…

鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(五)

文章大纲 引言一、LiteSession::CompileGraph(Model *model)二、LiteSession::CompileGraph(Model *model) 核心流程1、MindirModel::ConvertTensors1.1、遍历并执行MindirModel::ConvertTensor1.1.1、MindirModel::LoadTensorData 三、LiteSession::InitGraphInputTensors(mod…

WireShark网络取证分析第一集到第五集和dvwa靶场环境分析漏洞

文章目录 一、WireShark网络取证是什么?二、WireShark网络取证1.WireShark网络取证分析第一集Ann的即时通讯好友叫什么名字?在捕获的即时通讯对话中第一条评论是什么?Ann传输的文件叫什么名字?您想提取的文件的魔数是什么(前四个字节)?文件的MD5sum是多少?什么是秘密配方…

【51单片机按下按键1,8位共阴极数码管输出2022-606。按下按键2,8位共阴极数码管输出606-1132。】2022-6-10

缘由单片极的共阴极数码管按下按键1和按键2输出的内容-编程语言-CSDN问答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char Js0, miao…

HDMI转12G- SDI GS12170+GS12281-富利威方案设计及技术支持

GS12281 是一款低功耗、多速率、重定时电缆驱动器&#xff0c;支持高达 12G UHD-SDI 的速率。它设计用于接收 100Ω 差分输入信号&#xff0c;自动从数字视频信号中恢复嵌入式时钟并重新定时输入数据&#xff0c;并通过 75Ω 同轴电缆传输重新定时的信号。 100Ω 走线输入支持…