Eine einfache JDBC-SQL-Abfrage gibt ein leeres ResultSet zurückJava

Java-Forum
Anonymous
 Eine einfache JDBC-SQL-Abfrage gibt ein leeres ResultSet zurück

Post by Anonymous »

Ich habe versucht, ein Plugin, an dem ich arbeite, dazu zu bringen, mit meiner SQL-Datenbank zu kommunizieren, Tabellen zu erstellen und das Hinzufügen von Zeilen scheint gut zu funktionieren, aber einfache SELECT-Abfragen geben ein leeres ResultSet zurück. Der entsprechende Code ist unten aufgeführt.

Code: Select all

        queryL=
"SELECT RATING"
+ " FROM USERS"
+ " WHERE UUID = '"
+ UUID +"';";
queryG=
"SELECT RATING"
+ " FROM " + Constants.serverName
+ "_USERS"
+ " WHERE UUID = '"
+ UUID +"';";
try {
stmt=con.createStatement();
rs=stmt.executeQuery(queryL);

if (rs.next()){
r.setLocalRating(rs.getInt(1));
}else{
r.setLocalRating(0);
registerPlayer(UUID,false);
Dungeon.getPlugin(Dungeon.class).log("Player new to server");
}
stmt.close();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try{
stmt=con.createStatement();
rs=stmt.executeQuery(queryG);
if (rs.next()){
r.setGlobalRating(rs.getInt(1));
}else{
r.setGlobalRating(0);
registerPlayer(UUID,true);
Dungeon.getPlugin(Dungeon.class).log("Player new to network");
}
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Wie Sie sehen können, rufe ich registerPlayer auf, wenn das ResultSet leer ist (der Player existiert noch nicht in meiner Datenbank). Register Player löst dann einen doppelten Eintrag für einen Primärschlüsselfehler aus, sodass ich weiß, dass die gesuchte Tabelle und Zeile vorhanden ist.

Der folgende Code zeigt die Aktualisierungsabfragen, die in der Methode „registerPlayer“ verwendet werden.

Code: Select all

    if (global){
query=
"INSERT INTO"
//+ Constants.dbName + "."
+ " USERS"
+ " VALUES ('"
+ UUID + "', 0)";

}else{
query=
"INSERT INTO "
//+ Constants.dbName + "."
+ Constants.serverName
+ "_USERS "
+ "VALUES ('"
+ UUID + "', 0)";
}
Zuletzt der Vollständigkeit halber noch die Abfragen, die zum Erstellen der Tabellen verwendet wurden

Code: Select all

    String userLocalTable=
"CREATE TABLE IF NOT EXISTS " //+ Constants.dbName + "."
+ Constants.serverName +
"_USERS " +
"(UUID varchar(36) NOT NULL, " +
"RATING int NOT NULL, " +
"PRIMARY KEY (UUID))";
String userGlobalTable=
"CREATE TABLE IF NOT EXISTS " + //Constants.dbName + "."
"USERS " +
"(UUID varchar(36) NOT NULL, " +
"RATING int NOT NULL, " +
"PRIMARY KEY (UUID))";
Jeder Einblick in mein Problem wäre sehr dankbar, soweit ich weiß, sollten die SELECT-Abfragen keine leeren ResultSets zurückgeben.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post