SQL查询在包含选定的自动增量行

时间:2016-07-22 20:06:42

标签: java mysql sql jdbc

我在一个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);

它崩溃了,它跳了异常。它无法执行此查询,我也不知道原因,因为类似的查询执行得很好。你知道可能是什么问题吗?问题可能是因为我要选择的列是自动增量和主键吗?我不知道......

2 个答案:

答案 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。