QuestSystem/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java

91 lines
3.3 KiB
Java
Raw Normal View History

2024-07-30 22:12:01 +00:00
package com.yaohun.questsystem.data.database;
import com.yaohun.questsystem.Main;
import com.yaohun.questsystem.util.SqlUtil;
import java.sql.ResultSet;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class SqlManager {
public String table = "quest_playerdata";
// 创建数据库表格格式
public void createTable() {
// 数据库结构组成
// 玩家名(VARCHAR) 数据(VARCHAR) 数据保存时间(VARCHAR)
2024-08-06 06:01:55 +00:00
String s = "CREATE TABLE IF NOT EXISTS " + table + "(" +
2024-07-30 22:12:01 +00:00
" name VARCHAR(32) NOT NULL," +
" data VARCHAR(8000) NOT NULL," +
" savetime VARCHAR(256) NOT NULL" +
") ENGINE = InnoDB";
getSQL().updateSQL(s);
}
// 创建玩家数据
2024-08-06 06:01:55 +00:00
public void createPlayerData(String name) {
2024-07-30 22:12:01 +00:00
boolean butt = true;
2024-08-06 06:01:55 +00:00
String select = "SELECT * FROM " + table + " WHERE name = '%name%'";
try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) {
2024-07-30 22:12:01 +00:00
while (resultSet.next()) {
butt = false;
}
} catch (Exception e) {
e.printStackTrace();
}
// 若数据库没有name的数据则会创建数据
2024-08-06 06:01:55 +00:00
if (butt) {
2024-07-30 22:12:01 +00:00
String set = "INSERT INTO " + table + " (`name`,`data`, `savetime`) " +
"VALUES ('%name%','%data%', '%savetime%')";
set = set.replace("%name%", name);
set = set.replace("%data%", "");
set = set.replace("%savetime%", getNowTimeString());
getSQL().updateSQL(set);
2024-08-06 06:01:55 +00:00
System.out.println("[调试 - 输出] " + name + " 数据库数据已创建.");
2024-07-30 22:12:01 +00:00
}
}
2024-08-06 06:01:55 +00:00
public String getNowTimeString() {
2024-07-30 22:12:01 +00:00
// 获取当前时间戳
Instant now = Instant.now();
// 将时间戳转换为本地日期时间
LocalDateTime dateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm");
return dateTime.format(formatter);
}
// 获取玩家任务数据
public String getQuestData(String name) {
2024-08-06 06:01:55 +00:00
String select = "SELECT * FROM " + table + " WHERE name = '%name%'";
try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) {
2024-07-30 22:12:01 +00:00
while (resultSet.next()) {
String string = resultSet.getString("data");
2024-08-06 06:01:55 +00:00
if (string.length() >= 3) {
2024-07-30 22:12:01 +00:00
System.out.println("[调试 - 输出] " + name + " 数据: " + string);
return string;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2024-08-06 06:01:55 +00:00
public void SavePlayerData(String name, String jsonData) {
String set = "UPDATE `" + table + "` SET " +
2024-07-30 22:12:01 +00:00
"`data` = '%data%'," +
2024-08-06 06:01:55 +00:00
"`savetime` = '%savetime%' WHERE `" + table + "`.`name` = '%name%'";
2024-07-30 22:12:01 +00:00
getSQL().updateSQL(set.replace("%name%", name).
replace("%data%", jsonData).
2024-08-06 06:01:55 +00:00
replace("%savetime%", getNowTimeString()));
2024-07-30 22:12:01 +00:00
}
private SqlUtil getSQL() {
return Main.sqlUtil;
}
}