gpt4 book ai didi

java - 将 HashMap 发送到 SQL DB

转载 作者:行者123 更新时间:2023-11-29 08:47:22 26 4
gpt4 key购买 nike

我的代码不知何故是错误的:/

    public static Connection con = null;
public static void createConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String str1 = "s1.infinitysrv.com:3306";
String str2 = "sagesca1_hiscores";
String str3 = "sagesca1_server";
String str4 = "pass";
con = DriverManager.getConnection("jdbc:mysql://" + str1 + "/" + str2, str3, str4);
stmt = con.createStatement();
System.out.println("Connection to SQL database successful!");
} catch (Exception localException) {
System.out.println("Connection to SQL database failed");
localException.printStackTrace();
}
}
public static Map<String, Clan> clans;
public static boolean sendClans(){
try {
try {
clans = (HashMap<String, Clan>) XStreamUtil.getXStream().fromXML(new FileInputStream("data/clans.xml"));
} catch (Exception e) {
clans = new HashMap<String, Clan>();
}
for (Map.Entry<String, Clan> entries : clans.entrySet()) {
final Clan clan = entries.getValue();
clan.setTransient();
PreparedStatement ps = con.prepareStatement("INSERT INTO clans(name,roomOwner) values (?, ?)");
ps.setString(1, clan.getName());
ps.setString(2, clan.getOwner());
ps.executeUpdate();
}
} catch (SQLException e) {
//e.printStackTrace();
return false;
}
return true;
}

这是我的 ClanManager,它调用方法 sendClan

    private Map<String, Clan> clans;

@SuppressWarnings("unchecked")
public ClanManager() {
Logger.getInstance().info("Loading clans....");
try {
clans = (HashMap<String, Clan>) XStreamUtil.getXStream().fromXML(new FileInputStream("data/clans.xml"));
} catch (Exception e) {
clans = new HashMap<String, Clan>();
}
for (Map.Entry<String, Clan> entries : clans.entrySet()) {
final Clan clan = entries.getValue();
clan.setTransient();
//Hiscores.sendClans();
}
Logger.getInstance().info("Loaded " +clans.size()+ " SageScape clans.");
}

我不太确定问题是什么,但当我运行我的服务器时,错误指出了这一点:

PreparedStatement ps = con.prepareStatement("INSERT INTO clans(name,roomOwner) values (?, ?)");

我不知道代码有什么问题,如果有人可以帮助我,我会永远爱你。

最佳答案

我假设您已经在数据库中创建了一个具有架构的表,它有点像这样(这有点MySQL特定):

CREATE TABLE ClanTable(
name varchar(30),
roomOwner varchar(30)
)

现在,如果您要使用 JDBC 将数据插入到该表中,我建议您创建一个使用 PreparedStatement 在您的数据库中插入数据的方法。如果您是 JDBC 新手,显然您需要通读 "JDBC Basics"首先了解如何使用 JDBC。

假设表结构如上,其 PreparedStatement 将如下所示:

PreparedStatement ps = connection.prepareStatement("INSERT INTO ClanTable(name,roomOwner) values (?, ?)");

然后您将迭代您的map并执行此语句。请注意,如果您的 map 条目数量较少,则可以执行如下操作:

for(Map.Entry<String, Clan> entries: clans.entrySet()){
Clan clan = entries.getValue();
ps.setString(1, clan.getName());
ps.setString(1, clan.getOwner());

ps.executeUpdate();
}

关于java - 将 HashMap 发送到 SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com