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