我在一个java类中有一个方法,SELECT
一个来自我数据库的表中的一个,并且该列是数据库中的INT
类型,然后我从该coloumn中选择项目,将它放在List中并返回此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<Long>();
while (rs.next()){
racunID = rs.getLong("RacunID");
sifre.add(racunID);
}
return sifre;
}
现在,如何从此方法返回列表并放入另一个列表? 当我尝试这样做时,它不起作用......就像它看到返回的列表为空或者其他东西...... 为什么会这样?这个方法好吗? 我想有一个方法,从数据库表中返回一个完整的coloumn作为List,然后我想以某种方式使用这个List ...
答案 0 :(得分:1)
正如您所说,您的数据库中有一个INT值,并且您正在使用getLong()
来尝试获取INT值,这可能是它无法正常工作的原因。
尝试使用此代码:
while (rs.next()){
racunID = (Long) rs.getInt("RacunID");
sifre.add(racunID);
}
return sifre;
编辑1(简体):
while (rs.next()){
sifre.add(new Long(rs.getInt("RacunID")));
}
return sifre;
答案 1 :(得分:0)
您甚至不需要添加到新列表,只需在参数中传递原始列表:
public void vratiSveSifreRacuna(List<Long> passedList) throws SQLException {
String sqlVratiSifruRacuna = "SELECT RacunID FROM racun";
Statement stat = konekcija.createStatement();
ResultSet rs = stat.executeQuery(sqlVratiSifruRacuna);
Long racunID = 0L;
List<Long> sifre = passedList;
while (rs.next()){
racunID = rs.getInt("RacunID"); //column is int, it will automatically upcast to long don't worry about that
sifre.add(racunID);
}
//set sifre to null now to let it get garbage collected :)
sifre=null
}
现在调用方法如下:
yourclassreference.vratiSveSifreRacuna(yourListLong);
答案 2 :(得分:0)
保持你的方法不变(应避免对参数产生副作用)。
调用方法,存储结果,然后将其添加到您要完成的其他列表中。
List<Long> foo = ...; // i don't know where it comes from
List<Long> bar = vratiSveSifreRacuna();
foo.addAll(bar);