hsqldb - 如何替换我的Highscore(包含前10个)表中的值

时间:2014-12-04 11:15:20

标签: java sql hsqldb

我有一个包含两列名称和分数的表格。 我说并且它有10个带有得分的名字,我想要用最低分来替换这一行 如果新分数大于或等于表格中的最低分数,则使用新名称和分数。

我设法获得了最高值的ResultSet,但我没有用新的名称和分数替换它(在java中)。

String newName = "Test";
int score = 12345;
ResultSet result;
Statement stat = conn.createStatement();
result = stat.executeQuery("SELECT * FROM Highscore ORDER BY Score DESC");
result.next();
if(result.getInt(2) <= score) {
    // enter code here
}

2 个答案:

答案 0 :(得分:1)

尝试这样的事情

            String newName = "Test";
            int score = 12345;
            int newScore = 54321;
            ResultSet result;
            Statement stat = conn.createStatement();
            result = stat.executeQuery("SELECT * FROM Highscore ORDER BY Score ASC");// use DESC if u want to replace the highest value
            result.next(); 
            if(result.getInt(2) <= score)
            {
               PreparedStatement preparedStatement = conn.prepareStatement("UPDATE  Highscore  SET Name =? Score = ? WHERE Score = ?");
               preparedStatement.setString(1, newName);
               preparedStatement.setString(2, newScore);
               preparedStatement.setString(3, result.getInt(2));
               int updateCount = preparedStatement.executeUpdate();
            }  

答案 1 :(得分:1)

You can use following code to update lowest score record : 

String newName = "Test";
int score = 12345;
ResultSet result;
PreparedStatement ps = conn.prepareStatement("UPDATE Highscore SET NAME = ?, SCORE = ? WHERE SCORE = (SELECT MIN(SCORE) FROM Highscore)");
ps.setString(1, newName);
ps.setInt(2, score);
int updatedCount = ps.executeUpdate();
if(updatedCount>0) 
System.out.println("Record Successfully updated");