【发布时间】:2022-06-15 00:11:39
【问题描述】:
我做错了什么? 我不知道为什么它不会拾取 myid 变量
我希望它只拾取一条记录并显示回来
公共静态无效 CurrentStatus() {
try {
Connection conn = DriverManager.getConnection(DatabaseConstants.Database);
Statement statement = conn.createStatement();
System.out.println("Enter your ID: ");
Scanner id = new Scanner(System.in);
int myid = id.nextInt();
ResultSet status = statement.executeQuery("SELECT * FROM " + DatabaseConstants.Table_Troops
+ "WHERE" + DatabaseConstants.Column_ID + "= " + myid );
while (status.next()) {
System.out.println("Your current status is:" + "\n"
+ "Health: " + status.getInt(DatabaseConstants.Column_Health) + "\n"
+ "Supplies: " + status.getInt(DatabaseConstants.Column_Supplies) + "\n"
+ "Ammunition: " + status.getInt(DatabaseConstants.Column_Ammo) + "\n"
+ "Location: " + status.getInt(DatabaseConstants.Column_Supplies) + "\n");
}
//
statement.close();
conn.close();
} catch (SQLException e) {
System.out.println("Database error: " + e.getMessage());
e.printStackTrace(); // see location of errors
}
DatabaseConstants.showMenu();
}
【问题讨论】:
-
你调试了吗?您是否检查过您实际构建的查询?我想你会在
WHERE' and before=` 之后找到一个缺失的空格。这看起来像是一个查询,您知道要从哪个表中选择,所以我不明白为什么要这样构建它。但无论如何你都应该为搜索的值参数化