在最近的课设的时候因为jdbc是之前 学的不太记得了,所以用AI生成的,但是它给的代码是
String query = "SELECT * FROM users WHERE username=?";
try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
PreparedStatement statement = connection.prepareStatement(query);
ResultSet resultSet = statement.executeQuery()) {
// 处理查询结果
while (resultSet.next()) {
String username = resultSet.getString("username");
String password = resultSet.getString("password");
int id = resultSet.getInt("id");
System.out.println("Username: " + username + ", Password: " + password + ", ID: " + id);
}
} catch (SQLException e) {
e.printStackTrace();
}
这里严谨的说上面是有问题的,因为想用占位符,但是是try(){}的()里面写的,所以要是在这里设置占位符信息就会提示数据量需要是“应为声明、final 或 effectively final 变量”,但是后面AI的解决方案是读出来之后在while里面继续操作,比如账密验证,但是这样查询还好用,如果是在修改时就真的是一个痛苦面具在脸上了,后面我才反应过来,其实这个是try(){}和try{}catch{}两种资源处理的问题了,具体想了解的可以看看try(){}语法含义及用法,讲解还是比较详细的。