Java连接MySQL数据库实例

网友投稿 282 2022-08-04


Java连接MySQL数据库实例

首先说明,由于是8版本的数据库,所以配置类的写法上与5版本的有所区别,需要注意,同时用idea或eclipse时需要导入jar包,jar包的下载链接:

https://dev.mysql.com/get/archives/mysql-connector-java-8.0/mysql-connector-java-8.0.28.zip

如果想要下载8版本不同的jar包只需要修改8.0.28为指定版本即可。

idea导入jar包的方法如下:

然后是代码部分,首先先建表:

CREATE TABLE `train_message` (

`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',

`train_name` varchar(20) NOT NULL COMMENT '列车名',

`origin` varchar(30) NOT NULL COMMENT '始发地',

`terminal` varchar(30) NOT NULL COMMENT '终到地',

`departure_time` timestamp NOT NULL COMMENT '出站时间',

`state` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '正常' COMMENT '列车状态',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3

然后创建连接的配置类DbConfig.java,localhost是本机的ip地址,如果有服务器就填服务器的ip地址,message是数据库的名字,这里一张图说下有很多新手误解的名字

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

/**

* 数据库配置类

* @author 景苒

*/

public class DbConfig {

public Connection dbConfig() throws SQLException {

try {

Class.forName("com.mysql.cj.jdbc.Driver");

}catch (Exception e) {

System.out.print("加载驱动失败!");

e.printStackTrace();

}

String url = "jdbc:mysql://localhost:3306/message?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true";

String user = "root";

String password = "123456";

return DriverManager.getConnection(url, user, password);

}

}

然后写下主函数Main.java,这里主函数的函数体可以在最后再写,需要什么功能就把注释打开就好,快捷注释的方法,选中这句话,按ctrl加/,就能全注释了。

import java.sql.SQLException;

/**

* 主函数,调用功能

* @author 景苒

*/

public class Main {

public static void main(String[] args) throws SQLException {

// new GetMessage().getMessage();

// new UpdateTrainState().updateTrainState();

// new InsertTrain().insertTrain();

// new GetNumber().getNumber();

}

}

然后是每个的功能:

1.查询沈阳到武汉的所有列车信息,按出发时间先后排序

建GetMessage.java类

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

* 查询沈阳到武汉的所有列车信息,按出发时间先后排序

* @author 景苒

*/

public class GetMessage {

public void getMessage() throws SQLException {

Connection con = new DbConfig().dbConfig();

String sql = "select * from `train_message` where origin = ? and terminal = ? ORDER BY departure_time http://ASC";

String origin = "沈阳";

String terminal = "武汉";

PreparedStatement ps = con.prepareStatement(sql);

ps.setString(1, origin);

ps.setString(2, terminal);

ResultSet rs = ps.executeQuery();

try {

while (rs.next()) {

System.out.println("列车名:" + rs.getString("train_name")

+ " 始发站:" + rs.getString("origin")

+ " 终到站:" + rs.getString("terminal")

+ " 出发时间:" + rs.getString("departure_time")

+ " 列车状态:" + rs.getString("state"));

}

}catch (SQLException e) {

e.printStackTrace();

}finally {

ps.close();

con.close();

}

}

}

2.修改T2255列车的状态为停运

建UpdateTrainState.java类

import java.sql.Connection;

import java.sql.SQLException;

import java.sql.Statement;

/**

* 修改T2255列车的状态为停运

* @author 景苒

*/

public class UpdateTrainState {

public void updateTrainState() throws SQLException {

Connection con = new DbConfig().dbConfig();

String sql = "UPDATE `train_message` SET state = '停运' WHERE train_name = 'T2255'";

Statement statement = con.createStatement();

try {

int i = statement.executeUpdate(sql);

DZyrFPbgjL if (i > 0) {

System.out.println("更新成功");

}else {

System.out.println("更新失败");

}

}catch (SQLException e) {

e.printStackTrace();

}finally {

statement.close();

con.close();

}

}

}

3.新增一辆列车信息(自己输入)

建InsertTrain.java类

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.Scanner;

/**

* 新增一辆列车信息(自己输入)

* 始发时间为timestamp类型,输入时需要确保格式正确,如:2019-01-01 00:00:00

* @author 景苒

*/

public class InsertTrain {

public void insertTrain() throws SQLException {

Connection con = new DbConfig().dbConfig();

Scanner scanner = new Scanner(System.in);

String sql = "insert into `train_message` values(null, ?, ?, ?, ?, default)";

System.out.print("请输入列车名:");

String trainName = scanner.nextLine();

System.out.print("请输入始发站:");

String origin = scanner.nextLine();

System.out.print("请输入终到站:");

String terminal = scanner.nextLine();

System.out.print("请输入始发时间:");

String departureTime = scanner.nextLine();

PreparedStatement ps = con.prepareStatement(sql);

ps.setString(1, trainName);

ps.setString(2, origin);

ps.setString(3, terminal);

ps.setString(4, departureTime);

try {

int i = ps.executeUpdate();

if (i > 0) {

System.out.println("添加成功");

}else {

System.out.println("添加失败");

}

}catch (SQLException e) {

e.printStackTrace();

}finally {

ps.close();

con.close();

}

}

}

4.查询状态为正常的列车数量

建GetNumber.java类

import java.sql.Statement;

/**

* 查询状态为正常的列车数量

* @author 景苒

*/

public class GetNumber {

public void getNumber() throws SQLException {

Connection con = new DbConfig().dbConfig();

String sql = "select count(state) from `train_message` where state = '正常'";

Statement statement = con.createStatement();

try {

ResultSet resultSet = statement.executeQuery(sql);

while (resultSet.next()) {

System.out.println("状态为正常的列车数量为:" + resultSet.getInt(1));

}

}catch (SQLException e){

e.printStackTrace();

}finally {

statement.close();

con.close();

}

}

}

最后附上navicat的属性结构图和样例插入的语句

数据根据自己需求自行写入几个就行,以上就是java连接mysql数据库的实例代码,eclipse也大同小异,就导入jar包的方式不同。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现带缓冲的输入输出流(java 缓冲流)
下一篇:Java 轻松掌握字符缓冲流的使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~