【发布时间】:2015-12-09 08:35:30
【问题描述】:
我一直在尝试获取一个我正在开发的插件来与我的 SQL 数据库对话、创建表格和添加行似乎工作正常,但简单的 SELECT 查询返回一个空的 ResultSet。相关代码如下。
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();
}
如您所见,如果 ResultSet 为空(我的数据库中尚不存在播放器),我调用了 registerPlayer。注册播放器然后抛出主键错误的重复条目,所以我知道我正在寻找的表和行存在。
以下代码显示了 registerPlayer 方法中使用的更新查询。
if (global){
query=
"INSERT INTO"
//+ Constants.dbName + "."
+ " USERS"
+ " VALUES ('"
+ UUID + "', 0)";
}else{
query=
"INSERT INTO "
//+ Constants.dbName + "."
+ Constants.serverName
+ "_USERS "
+ "VALUES ('"
+ UUID + "', 0)";
}
最后,为了完整起见,用于创建表的查询
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))";
任何对我的问题的见解将不胜感激,据我所知,SELECT 查询不应该返回空的结果集。
【问题讨论】:
-
您是否碰巧使用 executeQuery 或 executeUpdate 来运行插入?
-
更新使用 executeUpdate() 运行,但据我所知,它们运行良好。问题是当我知道至少有 1 行时,SELECT 什么也不返回。
-
UUID 是什么数据类型(Java 中)?
-
我的Java变量是String,数据库中的列定义为varchar(36)
-
我没有看到任何明显的东西。我会寻找 UUID 的差异(您是从标准输入中读取它...它是否有一个您不期望的换行符?)。等等。我的猜测是 UUID 里面没有你认为它里面有的东西。尝试用 System.out.printf("->%s
标签: java mysql sql-server jdbc