1.3.4 release

This commit is contained in:
mlus 2024-10-11 17:43:44 +08:00
parent b9f4736f2c
commit 18813dfd1a
5 changed files with 90 additions and 57 deletions

View File

@ -3,4 +3,4 @@
org.gradle.jvmargs=-Xmx3G org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false org.gradle.daemon=false
mod_version=1.18.2-1.3.2 mod_version=1.18.2-1.3.4

View File

@ -17,6 +17,7 @@ import vip.fubuki.playersync.sync.ChatSync;
import vip.fubuki.playersync.sync.VanillaSync; import vip.fubuki.playersync.sync.VanillaSync;
import vip.fubuki.playersync.util.JDBCsetUp; import vip.fubuki.playersync.util.JDBCsetUp;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Mod(PlayerSync.MODID) @Mod(PlayerSync.MODID)
@ -51,6 +52,8 @@ public class PlayerSync
`advancements` blob, `advancements` blob,
`enderchest` mediumblob, `enderchest` mediumblob,
`effects` blob, `effects` blob,
`left_hand` blob,
`cursors` blob,
`xp` int DEFAULT NULL, `xp` int DEFAULT NULL,
`food_level` int DEFAULT NULL, `food_level` int DEFAULT NULL,
`score` int DEFAULT NULL, `score` int DEFAULT NULL,
@ -59,6 +62,27 @@ public class PlayerSync
`last_server` int DEFAULT NULL, `last_server` int DEFAULT NULL,
PRIMARY KEY (`uuid`) PRIMARY KEY (`uuid`)
);"""); );""");
JDBCsetUp.QueryResult queryResult = JDBCsetUp.executeQuery("""
SELECT COUNT(*) AS column_count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'player_data';
""");
ResultSet resultSet = queryResult.resultSet();
int columnCount = 0;
if(resultSet.next()) {
columnCount = resultSet.getInt("column_count");
}
if(columnCount<14){
JDBCsetUp.executeUpdate("""
ALTER TABLE player_data
ADD COLUMN left_hand blob,
ADD COLUMN cursors blob;
""");
}
JDBCsetUp.executeUpdate(""" JDBCsetUp.executeUpdate("""
CREATE TABLE IF NOT EXISTS server_info ( CREATE TABLE IF NOT EXISTS server_info (
`id` INT NOT NULL, `id` INT NOT NULL,
@ -70,6 +94,7 @@ public class PlayerSync
"VALUES(" + JdbcConfig.SERVER_ID.get() + ",true," + current + ") " + "VALUES(" + JdbcConfig.SERVER_ID.get() + ",true," + current + ") " +
"ON DUPLICATE KEY UPDATE id= " + JdbcConfig.SERVER_ID.get() +",enable = 1," + "ON DUPLICATE KEY UPDATE id= " + JdbcConfig.SERVER_ID.get() +",enable = 1," +
"last_update=" + current + ";"); "last_update=" + current + ";");
JDBCsetUp.executeUpdate("UPDATE server_info SET enable= 1 WHERE id= "+ JdbcConfig.SERVER_ID.get());
if(ModList.get().isLoaded("curios")) { if(ModList.get().isLoaded("curios")) {
JDBCsetUp.executeUpdate("CREATE TABLE IF NOT EXISTS curios (uuid CHAR(36) NOT NULL,curios_item BLOB, PRIMARY KEY (uuid))"); JDBCsetUp.executeUpdate("CREATE TABLE IF NOT EXISTS curios (uuid CHAR(36) NOT NULL,curios_item BLOB, PRIMARY KEY (uuid))");

View File

@ -34,7 +34,7 @@ public class ModsSupport {
for (int i = 0; i < handler.getSlots(); i++) { for (int i = 0; i < handler.getSlots(); i++) {
try { try {
if (curios.get(i) == null) continue; if (curios.get(i) == null) continue;
handler.setStackInSlot(i, ItemStack.of(NbtUtils.snbtToStructure(curios.get(i).replace("|", ",")))); handler.setStackInSlot(i, ItemStack.of(NbtUtils.snbtToStructure(curios.get(i).replace("|", ",").replace("^","\"").replace("<","{").replace(">","}").replace("~", "'"))));
} catch (CommandSyntaxException e) { } catch (CommandSyntaxException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -61,7 +61,7 @@ public class ModsSupport {
itemHandler.ifPresent(handler -> { itemHandler.ifPresent(handler -> {
for (int i = 0; i < handler.getSlots(); i++) { for (int i = 0; i < handler.getSlots(); i++) {
if (!handler.getStackInSlot(i).isEmpty()) { if (!handler.getStackInSlot(i).isEmpty()) {
String sNBT= handler.getStackInSlot(i).serializeNBT().toString().replace(",", "|"); String sNBT= VanillaSync.serialize(handler.getStackInSlot(i).serializeNBT().toString());
curios.put(i, sNBT); curios.put(i, sNBT);
} }
} }

View File

@ -5,12 +5,14 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.NbtUtils;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.event.server.ServerStoppedEvent; import net.minecraftforge.event.server.ServerStoppedEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
@ -45,14 +47,14 @@ public class VanillaSync {
ResultSet resultSet=queryResult.resultSet(); ResultSet resultSet=queryResult.resultSet();
ServerPlayer serverPlayer = (ServerPlayer) event.getEntity(); ServerPlayer serverPlayer = (ServerPlayer) event.getEntity();
if(!resultSet.next()){ if(!resultSet.next()){
Store(event.getPlayer(),true,Dist.CLIENT.isDedicatedServer()); store(event.getPlayer(),true,Dist.CLIENT.isDedicatedServer());
return; return;
} }
boolean online = resultSet.getBoolean("online"); boolean online = resultSet.getBoolean("online");
int lastServer = resultSet.getInt("last_server"); int lastServer = resultSet.getInt("last_server");
queryResult=JDBCsetUp.executeQuery("SELECT * FROM player_data WHERE uuid='"+player_uuid+"'"); queryResult=JDBCsetUp.executeQuery("SELECT * FROM player_data WHERE uuid='"+player_uuid+"'");
resultSet= queryResult.resultSet(); resultSet= queryResult.resultSet();
if(online) { if(online && lastServer != JdbcConfig.SERVER_ID.get()) {
queryResult=JDBCsetUp.executeQuery("SELECT last_update,enable FROM server_info WHERE id='"+lastServer+"'"); queryResult=JDBCsetUp.executeQuery("SELECT last_update,enable FROM server_info WHERE id='"+lastServer+"'");
ResultSet getServerInfo = queryResult.resultSet(); ResultSet getServerInfo = queryResult.resultSet();
@ -64,7 +66,7 @@ public class VanillaSync {
serverPlayer.connection.disconnect(new TranslatableComponent("playersync.already_online")); serverPlayer.connection.disconnect(new TranslatableComponent("playersync.already_online"));
return; return;
} }
JDBCsetUp.executeUpdate("UPDATE server_info SET enable='0' WHERE id=" + lastServer); JDBCsetUp.executeUpdate("UPDATE server_info SET enable= '0' WHERE id=" + lastServer);
} }
getServerInfo.close(); getServerInfo.close();
@ -72,7 +74,7 @@ public class VanillaSync {
} }
JDBCsetUp.executeUpdate("UPDATE server_info SET last_update=" + System.currentTimeMillis() + " WHERE id=" + JdbcConfig.SERVER_ID.get()); JDBCsetUp.executeUpdate("UPDATE server_info SET last_update=" + System.currentTimeMillis() + " WHERE id=" + JdbcConfig.SERVER_ID.get());
JDBCsetUp.executeUpdate("UPDATE player_data SET online='1',last_server=" + JdbcConfig.SERVER_ID.get() + " WHERE uuid='"+player_uuid+"'"); JDBCsetUp.executeUpdate("UPDATE player_data SET online= '1',last_server=" + JdbcConfig.SERVER_ID.get() + " WHERE uuid='"+player_uuid+"'");
if(resultSet.next()) { if(resultSet.next()) {
//Easy Part //Easy Part
serverPlayer.setHealth(resultSet.getInt("health")); serverPlayer.setHealth(resultSet.getInt("health"));
@ -82,23 +84,27 @@ public class VanillaSync {
serverPlayer.experienceProgress=0; serverPlayer.experienceProgress=0;
serverPlayer.giveExperiencePoints(resultSet.getInt("xp")); serverPlayer.giveExperiencePoints(resultSet.getInt("xp"));
serverPlayer.setScore(resultSet.getInt("score")); serverPlayer.setScore(resultSet.getInt("score"));
//Left Hand
serverPlayer.setItemInHand(InteractionHand.OFF_HAND,ItemStack.of(NbtUtils.snbtToStructure(resultSet.getString("left_hand").replace("|",",").replace("^","\"").replace("<","{").replace(">","}").replace("~", "'"))));
//Cursor
serverPlayer.containerMenu.setCarried(ItemStack.of(NbtUtils.snbtToStructure(resultSet.getString("cursors").replace("|",",").replace("^","\"").replace("<","{").replace(">","}").replace("~", "'"))));
//Equipment //Equipment
String armor_data=resultSet.getString("armor"); String armor_data=resultSet.getString("armor");
if(armor_data.length()>2) { if(armor_data.length()>2) {
Map<Integer, String> equipment = LocalJsonUtil.StringToEntryMap(armor_data); Map<Integer, String> equipment = LocalJsonUtil.StringToEntryMap(armor_data);
for (Map.Entry<Integer, String> entry : equipment.entrySet()) { for (Map.Entry<Integer, String> entry : equipment.entrySet()) {
serverPlayer.getInventory().armor.set(entry.getKey(), Deserialize(entry)); serverPlayer.getInventory().armor.set(entry.getKey(), deserialize(entry));
} }
} }
//Inventory //Inventory
Map<Integer,String> inventory = LocalJsonUtil.StringToEntryMap(resultSet.getString("inventory")); Map<Integer,String> inventory = LocalJsonUtil.StringToEntryMap(resultSet.getString("inventory"));
for (Map.Entry<Integer, String> entry : inventory.entrySet()) { for (Map.Entry<Integer, String> entry : inventory.entrySet()) {
serverPlayer.getInventory().setItem(entry.getKey(),Deserialize(entry)); serverPlayer.getInventory().setItem(entry.getKey(), deserialize(entry));
} }
//Ender chest //Ender chest
Map<Integer,String> ender_chest = LocalJsonUtil.StringToEntryMap(resultSet.getString("enderchest")); Map<Integer,String> ender_chest = LocalJsonUtil.StringToEntryMap(resultSet.getString("enderchest"));
for (Map.Entry<Integer, String> entry : ender_chest.entrySet()) { for (Map.Entry<Integer, String> entry : ender_chest.entrySet()) {
serverPlayer.getEnderChestInventory().setItem(entry.getKey(),Deserialize(entry)); serverPlayer.getEnderChestInventory().setItem(entry.getKey(), deserialize(entry));
} }
//Effects //Effects
String effectData=resultSet.getString("effects"); String effectData=resultSet.getString("effects");
@ -122,7 +128,7 @@ public class VanillaSync {
byte [] bytes=resultSet.getString("advancements").getBytes(); byte [] bytes=resultSet.getString("advancements").getBytes();
Files.write(advancements.toPath(),bytes); Files.write(advancements.toPath(),bytes);
}else{ }else{
File[] files= ScanAdvancementsFile(player_uuid, gameDir); File[] files= scanAdvancementsFile(player_uuid, gameDir);
for (File file : files) { for (File file : files) {
if(file==null) continue; if(file==null) continue;
byte [] bytes=resultSet.getString("advancements").getBytes(); byte [] bytes=resultSet.getString("advancements").getBytes();
@ -139,7 +145,7 @@ public class VanillaSync {
} }
@SubscribeEvent @SubscribeEvent
public static void OnPlayerJoin(PlayerEvent.PlayerLoggedInEvent event){ public static void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event){
executorService.submit(()->{ executorService.submit(()->{
try { try {
doPlayerJoin(event); doPlayerJoin(event);
@ -150,19 +156,20 @@ public class VanillaSync {
} }
private static ItemStack Deserialize(Map.Entry<Integer, String> entry) throws CommandSyntaxException { public static ItemStack deserialize(Map.Entry<Integer, String> entry) throws CommandSyntaxException {
String nbt= entry.getValue().replace("|",",").replace("^","\"").replace("<","{").replace(">","}").replace("~", "'"); String nbt= entry.getValue().replace("|",",").replace("^","\"").replace("<","{").replace(">","}").replace("~", "'");
CompoundTag compoundTag = NbtUtils.snbtToStructure(nbt); CompoundTag compoundTag = NbtUtils.snbtToStructure(nbt);
return ItemStack.of(compoundTag); return ItemStack.of(compoundTag);
} }
public static String serialize(String object){
return object.replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~");
}
public static void doPlayerSaveToFile(PlayerEvent.SaveToFile event) throws SQLException, IOException { public static void doPlayerSaveToFile(PlayerEvent.SaveToFile event) throws SQLException, IOException {
JDBCsetUp.executeUpdate("UPDATE server_info SET last_update=" + System.currentTimeMillis() + " WHERE id=" + JdbcConfig.SERVER_ID.get()); JDBCsetUp.executeUpdate("UPDATE server_info SET last_update=" + System.currentTimeMillis() + " WHERE id=" + JdbcConfig.SERVER_ID.get());
if(!event.getEntity().getTags().contains("player_synced")) return; if(!event.getEntity().getTags().contains("player_synced")) return;
Store(event.getPlayer(),false,Dist.CLIENT.isDedicatedServer()); store(event.getPlayer(),false,Dist.CLIENT.isDedicatedServer());
//Mod support
ModsSupport modsSupport = new ModsSupport();
modsSupport.onPlayerLeave(event.getPlayer());
} }
@SubscribeEvent @SubscribeEvent
@ -182,18 +189,17 @@ public class VanillaSync {
} }
public static void doPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) throws SQLException, IOException { public static void doPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) throws SQLException, IOException {
if(!event.getEntity().getTags().contains("player_synced")) return;
String player_uuid = event.getEntity().getUUID().toString(); String player_uuid = event.getEntity().getUUID().toString();
JDBCsetUp.executeUpdate("UPDATE player_data SET online= '0' WHERE uuid='"+player_uuid+"'"); JDBCsetUp.executeUpdate("UPDATE player_data SET online= '0' WHERE uuid='"+player_uuid+"'");
Store(event.getPlayer(),false,Dist.CLIENT.isDedicatedServer()); store(event.getPlayer(),false,Dist.CLIENT.isDedicatedServer());
//Mod support
ModsSupport modsSupport = new ModsSupport();
modsSupport.onPlayerLeave(event.getPlayer());
event.getEntity().removeTag("player_synced");
} }
@SubscribeEvent @SubscribeEvent
public static void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) { public static void onPlayerLogout(PlayerEvent.PlayerLoggedOutEvent event) throws SQLException {
//Mod support
ModsSupport modsSupport = new ModsSupport();
modsSupport.onPlayerLeave(event.getPlayer());
executorService.submit(()->{ executorService.submit(()->{
try { try {
doPlayerLogout(event); doPlayerLogout(event);
@ -204,32 +210,36 @@ public class VanillaSync {
} }
public static void Store(Player player, boolean init,boolean isServer) throws SQLException, IOException { public static void store(Player player, boolean init, boolean isServer) throws SQLException, IOException {
String player_uuid = player.getUUID().toString(); String player_uuid = player.getUUID().toString();
//Easy part //Easy part
int XP = player.totalExperience; int XP = player.totalExperience;
int score=player.getScore(); int score=player.getScore();
int food_level=player.getFoodData().getFoodLevel(); int food_level=player.getFoodData().getFoodLevel();
int health=(int) player.getHealth(); int health=(int) player.getHealth();
//Left hand
String left_hand = serialize(player.getItemInHand(InteractionHand.OFF_HAND).serializeNBT().toString());
//Cursor
String cursors = serialize(player.containerMenu.getCarried().serializeNBT().toString());
//Equipment //Equipment
Map<Integer,String> equipment =new HashMap<>() ; Map<Integer,String> equipment =new HashMap<>() ;
for (int i = 0; i < player.getInventory().armor.size(); i++) { for (int i = 0; i < player.getInventory().armor.size(); i++) {
ItemStack itemStack = player.getInventory().armor.get(i); ItemStack itemStack = player.getInventory().armor.get(i);
if(itemStack.isEmpty()) continue; if(itemStack.isEmpty()) continue;
equipment.put(i,itemStack.serializeNBT().toString().replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~")); equipment.put(i,serialize(itemStack.serializeNBT().toString()));
} }
//inventory //inventory
Inventory inventory = player.getInventory(); Inventory inventory = player.getInventory();
Map<Integer,String> inventoryMap=new HashMap<>(); Map<Integer,String> inventoryMap = new HashMap<>();
for (int i = 0; i < inventory.items.size(); i++) { for (int i = 0; i < inventory.items.size(); i++) {
CompoundTag itemNBT = inventory.items.get(i).serializeNBT(); CompoundTag itemNBT = inventory.items.get(i).serializeNBT();
inventoryMap.put(i,itemNBT.toString().replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~")); inventoryMap.put(i,serialize(itemNBT.toString()));
} }
//EnderChest //EnderChest
Map<Integer, String> ender_chest=new HashMap<>(); Map<Integer, String> ender_chest = new HashMap<>();
for (int i=0;i< player.getEnderChestInventory().getContainerSize();i++) { for (int i=0;i< player.getEnderChestInventory().getContainerSize();i++) {
CompoundTag itemNBT = player.getEnderChestInventory().getItem(i).serializeNBT(); CompoundTag itemNBT = player.getEnderChestInventory().getItem(i).serializeNBT();
ender_chest.put(i,itemNBT.toString().replace(",","|").replace("\"","^").replace("{","<").replace("}",">").replace("'","~")); ender_chest.put(i,serialize(itemNBT.toString()));
} }
//Effects //Effects
Map<MobEffect,MobEffectInstance> effects= player.getActiveEffectsMap(); Map<MobEffect,MobEffectInstance> effects= player.getActiveEffectsMap();
@ -246,7 +256,7 @@ public class VanillaSync {
advancements = new File(gameDir, JdbcConfig.SYNC_WORLD.get().get(0)+"/advancements"+"/"+player_uuid+".json"); advancements = new File(gameDir, JdbcConfig.SYNC_WORLD.get().get(0)+"/advancements"+"/"+player_uuid+".json");
}else{ }else{
// File gameDir = Minecraft.getInstance().gameDirectory; // File gameDir = Minecraft.getInstance().gameDirectory;
File[] files=ScanAdvancementsFile(player_uuid, gameDir); File[] files= scanAdvancementsFile(player_uuid, gameDir);
//Get LastModified //Get LastModified
long latestModifiedDate = 0; long latestModifiedDate = 0;
for (File file : files) { for (File file : files) {
@ -265,11 +275,11 @@ public class VanillaSync {
//SQL Operation //SQL Operation
if(init){ if(init){
JDBCsetUp.executeUpdate("INSERT INTO player_data (uuid,armor,inventory,enderchest,advancements,effects,xp,food_level,health,score,online) VALUES ('"+player_uuid+"','"+equipment+"','"+inventoryMap+"','"+ender_chest+"','"+advancements+"','"+effectMap+"','"+XP+"','"+food_level+"','"+health+"','"+score+"',online=true)"); JDBCsetUp.executeUpdate("INSERT INTO player_data (uuid,armor,inventory,enderchest,advancements,effects,xp,food_level,health,score,left_hand,cursors,online) VALUES ('"+player_uuid+"','"+equipment+"','"+inventoryMap+"','"+ender_chest+"','"+advancements+"','"+effectMap+"','"+XP+"','"+food_level+"','"+health+"','"+score+"','"+left_hand+"','"+cursors+"',online=true)");
}else JDBCsetUp.executeUpdate("UPDATE player_data SET inventory = '"+inventoryMap+"',armor='"+equipment+"' ,xp='"+XP+"',effects='"+effectMap+"',enderchest='"+ender_chest+"',score='"+score+"',food_level='"+food_level+"',health='"+health+"',advancements='"+json+"' WHERE uuid = '"+player_uuid+"'"); }else JDBCsetUp.executeUpdate("UPDATE player_data SET inventory = '"+inventoryMap+"',armor='"+equipment+"' ,xp='"+XP+"',effects='"+effectMap+"',enderchest='"+ender_chest+"',score='"+score+"',food_level='"+food_level+"',health='"+health+"',advancements='"+json+"',left_hand='"+left_hand+"',cursors='"+cursors+"' WHERE uuid = '"+player_uuid+"'");
} }
private static File[] ScanAdvancementsFile(String player_uuid, File gameDir) { private static File[] scanAdvancementsFile(String player_uuid, File gameDir) {
File[] files = new File[JdbcConfig.SYNC_WORLD.get().size()]; File[] files = new File[JdbcConfig.SYNC_WORLD.get().size()];
for (int i = 0; i < JdbcConfig.SYNC_WORLD.get().size(); i++) { for (int i = 0; i < JdbcConfig.SYNC_WORLD.get().size(); i++) {
File advanceFile=new File(gameDir, "saves/"+JdbcConfig.SYNC_WORLD.get().get(i)+"/advancements"+"/"+player_uuid+".json"); File advanceFile=new File(gameDir, "saves/"+JdbcConfig.SYNC_WORLD.get().get(i)+"/advancements"+"/"+player_uuid+".json");
@ -279,15 +289,17 @@ public class VanillaSync {
return files; return files;
} }
// @SubscribeEvent static int tick = 0;
// public void RegisterCommand(RegisterCommandsEvent event){
// CommandDispatcher<CommandSourceStack> dispatcher=event.getDispatcher(); @SubscribeEvent
// LiteralCommandNode<CommandSourceStack> cmd = dispatcher.register( public static void onUpdate(TickEvent.ServerTickEvent event) throws SQLException {
// Commands.literal("serializeNBT").executes(context -> {context.getSource().sendSuccess(Component.literal(context.getSource().getPlayer().getItemInHand(InteractionHand.MAIN_HAND).serializeNBT().toString()),true); tick++;
// return 0; if(tick == 1800) {
// }) tick=0;
// ); long current = System.currentTimeMillis();
// } JDBCsetUp.executeUpdate("UPDATE server_info SET last_update ="+current+" WHERE id= "+ JdbcConfig.SERVER_ID.get());
}
}
} }

View File

@ -1,9 +1,5 @@
package vip.fubuki.playersync.util; package vip.fubuki.playersync.util;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.TranslatableComponent;
import org.lwjgl.system.CallbackI;
import vip.fubuki.playersync.config.JdbcConfig; import vip.fubuki.playersync.config.JdbcConfig;
import java.sql.*; import java.sql.*;
@ -18,10 +14,10 @@ public class JDBCsetUp {
public static QueryResult executeQuery(String sql) throws SQLException{ public static QueryResult executeQuery(String sql) throws SQLException{
Connection connection = getConnection(); Connection connection = getConnection();
PreparedStatement useStatement = connection.prepareStatement("USE ?");
useStatement.setString(1, JdbcConfig.DATABASE_NAME.get());
useStatement.executeUpdate();
try (Statement useStatement = connection.createStatement()) {
useStatement.execute("USE " + JdbcConfig.DATABASE_NAME.get());
}
PreparedStatement queryStatement = connection.prepareStatement(sql); PreparedStatement queryStatement = connection.prepareStatement(sql);
ResultSet resultSet = queryStatement.executeQuery(); ResultSet resultSet = queryStatement.executeQuery();
return new QueryResult(connection,resultSet); return new QueryResult(connection,resultSet);
@ -30,9 +26,9 @@ public class JDBCsetUp {
public static void executeUpdate(String sql) throws SQLException{ public static void executeUpdate(String sql) throws SQLException{
try (Connection connection = getConnection()) { try (Connection connection = getConnection()) {
PreparedStatement useStatement = connection.prepareStatement("USE ?"); try (Statement useStatement = connection.createStatement()) {
useStatement.setString(1, JdbcConfig.DATABASE_NAME.get()); useStatement.execute("USE " + JdbcConfig.DATABASE_NAME.get());
useStatement.executeUpdate(); }
try (PreparedStatement updateStatement = connection.prepareStatement(sql)) { try (PreparedStatement updateStatement = connection.prepareStatement(sql)) {
updateStatement.executeUpdate(); updateStatement.executeUpdate();
@ -40,12 +36,12 @@ public class JDBCsetUp {
} }
} }
public static void Update(String sql, String... argument) throws SQLException{ public static void update(String sql, String... argument) throws SQLException{
Connection connection = getConnection(); Connection connection = getConnection();
PreparedStatement useStatement = connection.prepareStatement("USE ?"); try (Statement useStatement = connection.createStatement()) {
useStatement.setString(1, JdbcConfig.DATABASE_NAME.get()); useStatement.execute("USE " + JdbcConfig.DATABASE_NAME.get());
useStatement.executeUpdate(); }
PreparedStatement updateStatement = connection.prepareStatement(sql); PreparedStatement updateStatement = connection.prepareStatement(sql);
for (int i = 1; i <= argument.length; i++) { for (int i = 1; i <= argument.length; i++) {