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; } }