SQLite 查找 UUID 并更改行中的值(Minecraft 插件)
SQLite find a UUID and change value in row (Minecraft plugin)
我对 bukkit 编码中的 SQLite 有疑问。我试图弄清楚如何使用 UUID 在数据库中查找玩家并在同一行更改值(例如令牌数)。我正在使用准备好的声明并且我已经尝试过这个,但我不知道如何处理它。有人愿意给我建议吗?谢谢。
Connection conn = null;
PreparedStatement ps = null;
PreparedStatement find = null;
ResultSet rs = null;
try {
conn = getSQLConnection();
find = conn.prepareStatement("SELECT * FROM " + table + " WHERE player = '"+uuid+"';");
ps = conn.prepareStatement("REPLACE INTO " + table + " (cookies) VALUES(?)");
rs = find.executeQuery();
while(rs.next()){
if(rs.getString("player").equals(uuid)){
ps.setInt(1,cookies);
}
}
ps.executeUpdate();
find.executeUpdate();
return;
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
} finally {
try {
if (ps != null)
ps.close();
if (conn != null)
conn.close();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionClose(), ex);
}
}
return;
}
更新查询呢?您可以 select 使用 where 子句更新哪些行。
您可以使用单个 UPDATE
语句:
try {
conn = getSQLConnection();
ps = conn.prepareStatement("UPDATE " + table + " SET cookies = ? WHERE player = ?;");
ps.setString(1, cookies);
ps.setString(2, uuid);
ps.executeUpdate();
} ....
我假定您要更新的列是 cookies
。
我对 bukkit 编码中的 SQLite 有疑问。我试图弄清楚如何使用 UUID 在数据库中查找玩家并在同一行更改值(例如令牌数)。我正在使用准备好的声明并且我已经尝试过这个,但我不知道如何处理它。有人愿意给我建议吗?谢谢。
Connection conn = null;
PreparedStatement ps = null;
PreparedStatement find = null;
ResultSet rs = null;
try {
conn = getSQLConnection();
find = conn.prepareStatement("SELECT * FROM " + table + " WHERE player = '"+uuid+"';");
ps = conn.prepareStatement("REPLACE INTO " + table + " (cookies) VALUES(?)");
rs = find.executeQuery();
while(rs.next()){
if(rs.getString("player").equals(uuid)){
ps.setInt(1,cookies);
}
}
ps.executeUpdate();
find.executeUpdate();
return;
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
} finally {
try {
if (ps != null)
ps.close();
if (conn != null)
conn.close();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionClose(), ex);
}
}
return;
}
更新查询呢?您可以 select 使用 where 子句更新哪些行。
您可以使用单个 UPDATE
语句:
try {
conn = getSQLConnection();
ps = conn.prepareStatement("UPDATE " + table + " SET cookies = ? WHERE player = ?;");
ps.setString(1, cookies);
ps.setString(2, uuid);
ps.executeUpdate();
} ....
我假定您要更新的列是 cookies
。