QuestSystem/src/main/java/com/yaohun/questsystem/data/database/SqlManager.java
2024-08-06 14:01:55 +08:00

91 lines
3.3 KiB
Java

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)
String s = "CREATE TABLE IF NOT EXISTS " + table + "(" +
" name VARCHAR(32) NOT NULL," +
" data VARCHAR(8000) NOT NULL," +
" savetime VARCHAR(256) NOT NULL" +
") ENGINE = InnoDB";
getSQL().updateSQL(s);
}
// 创建玩家数据
public void createPlayerData(String name) {
boolean butt = true;
String select = "SELECT * FROM " + table + " WHERE name = '%name%'";
try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) {
while (resultSet.next()) {
butt = false;
}
} catch (Exception e) {
e.printStackTrace();
}
// 若数据库没有name的数据则会创建数据
if (butt) {
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);
System.out.println("[调试 - 输出] " + name + " 数据库数据已创建.");
}
}
public String getNowTimeString() {
// 获取当前时间戳
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) {
String select = "SELECT * FROM " + table + " WHERE name = '%name%'";
try (ResultSet resultSet = getSQL().querySQL(select.replace("%name%", name))) {
while (resultSet.next()) {
String string = resultSet.getString("data");
if (string.length() >= 3) {
System.out.println("[调试 - 输出] " + name + " 数据: " + string);
return string;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public void SavePlayerData(String name, String jsonData) {
String set = "UPDATE `" + table + "` SET " +
"`data` = '%data%'," +
"`savetime` = '%savetime%' WHERE `" + table + "`.`name` = '%name%'";
getSQL().updateSQL(set.replace("%name%", name).
replace("%data%", jsonData).
replace("%savetime%", getNowTimeString()));
}
private SqlUtil getSQL() {
return Main.sqlUtil;
}
}