我已经浏览了这个论坛,并在网上搜索了我上述问题的解决方案,但找不到能指向正确方向的东西。如果这是重复,请原谅我。
我正在处理我的应用程序与MS Access 2016数据库交互的java项目。我的程序的一个功能是查询数据库中的特定记录,并在gui中显示该记录的数据。这是我检索数据的代码:
int i = 0;
String q = "select * from QueryData where id=123456";
try {
pstmnt=conn.prepareStatement(q);
Object obj ;
rs = pstmnt.executeQuery();
while (rs.next()) {
obj=rs.getObject(i+1);
data.add(obj); //where data is a List object i++;
}
} catch ....
问题是我只获得此记录中的第一个值(记录的第一列),并且记录/行中有更多可用数据。
可能是rs.next()
方法正在执行此操作,如果是这样,我应该使用什么来获取此特定记录中的下一个值?
答案 0 :(得分:2)
ResultSet#next()
遍历结果集中的行(在本例中,它只是一行)。如果您未事先了解结果集的结构,可以从ResultSetMetaData
对象中动态推导出结果:
int i=0;
String q="select * from QueryData where id=123456";
try (PreparedStatement pstmnt = conn.prepareStatement(q);
ResultSet rs = pstmnt.executeQuery()) {
ResultSetMetaData rsmd = rs.getMetaData();
// Assume it's just one row.
// If there's more than one, you need a while loop
if (rs.next()) {
for (int i = 0; i < rsmd.getColumnCount(); ++i) {
data.add(rs.getObject(i + 1));
}
}
}