我真的很困惑为什么这组代码只返回一个值。我在这里要做的是查询具有主键作为参数的所有* sense_num *(不是主键)。结果应包含2个或更多sense_num,因此在每个sense_num结果中,我尝试将每个元素存储在int []数组中并分别返回int数组。例如,该查询的结果是sense_num 172&它们都应该已经在数组中但是当我测试了调用函数时,它收到的是最后一个值,173。
我希望你能帮助我。谢谢!
public int [] getAllSenseID(int primeID){
int[] objects = {};
String qry = "SELECT sense_num FROM cebuano_sense WHERE id_num = '" + primeID + "'";
try {
DatabaseConn db = new DatabaseConn("cebuano_wsd");
db.connect();
db.query(qry);
ResultSet result = db.getResult();
ResultSetMetaData data = db.getData();
if (result.next() == true) {
java.sql.ResultSetMetaData rsmd = result.getMetaData();
int colNo = rsmd.getColumnCount();
result.beforeFirst();
int row = 0;
System.out.println(colNo + "::> Column Number");
while (result.next()) {
objects = new int[colNo + 1];
int i = 0;
// object [0]在我测试它时具有所有值,这就是为什么它只接受最后一个//一个...如何获取或接收这两个值?
while (i < colNo) {
objects[i] = result.getInt(colNo);
//print to test
System.out.println(objects.length + " >> Count of Objects");
System.out.println(i + " :: " + objects[i] + " >> result");
i++;
}
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return objects;
}
答案 0 :(得分:2)
你的行
objects = new int[colNo + 1];
替换你以前的任何一行,所以你只有最后一行。
您可以为每行添加List<int[]>
。
答案 1 :(得分:0)
您的qry从表中选择一列,因此colNo始终为1.
所以我认为你的对象数组需要与行计数相对应,而在results.next循环中,你要填写数组。希望有所帮助, - MS。
答案 2 :(得分:0)
看起来你期望对象[0]成为ResultSet中的第一行,对象[1]成为第二行,等等。你实际做的是将第一列放在对象[0]中],对象[1]等中的第二列,每行都会覆盖前一行。由于您的查询只有一列,因此您不需要内部循环。只需遍历ResultSet并将每行的sense_num放入objects []中的下一个可用元素。然后,对象[]将包含我认为您期望的内容。