我在一个java类中有一个方法,SELECT
来自我数据库的一个表中的一列,并且该列是数据库中的INT
类型,然后我从该列中选择了项,放入List<Long>
并且方法返回此List
。这是方法:
public List<Long> vratiSveSifreRacuna() throws SQLException {
String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";
Statement stat = konekcija.createStatement();
ResultSet rs = stat.executeQuery(sqlVratiSifruRacuna);
Long racunID = 0L;
List<Long> sifre = new ArrayList<>();
while (rs.next()){
//racunID = rs.getLong("RacunID");
sifre.add(new Long(rs.getInt("RacunID")));
}
return sifre;
}
问题是,当我开始逐行调试时,在这一行:
ResultSet rs = stat.executeQuery(sqlVratiSifruRacuna);
它崩溃了,它跳了异常。它无法执行此查询,我也不知道原因,因为类似的查询执行得很好。你知道可能是什么问题吗?问题可能是因为我要选择的列是自动增量和主键吗?我不知道......
答案 0 :(得分:1)
您的公共(假设静态)方法需要将连接对象作为参数传递给它,因为它在本地范围内不可用:
public static List<Long> vratiSveSifreRacuna(Connection konekcija) throws SQLException {
String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";
Statement stat = konekcija.createStatement();
ResultSet rs = stat.executeQuery(sqlVratiSifruRacuna);
否则在本地上下文中包含连接:
public static List<Long> vratiSveSifreRacuna(String url, String username, String password) throws SQLException {
Connection konekcija = DriverManager.getConnection(url, username, password);
String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";
Statement stat = konekcija.createStatement();
ResultSet rs = stat.executeQuery(sqlVratiSifruRacuna);
答案 1 :(得分:1)
我最终解决了问题所以我想分享解决方案。问题实际上是愚蠢的,我不小心把代码行与数据库连接在我调用此方法的行下面。所以调用方法的地方,sql查询实际上是空的,因此它会发出错误nullPointerException。