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