java连接数据库并显示到窗口上少了一行数据?这是为啥?

a15880859175 2014-06-11 08:35:01
public Collection getTableCollection(String sqlString){
Collection collection=new Vector();
try{new CommonJdbc();

Connection con=CommonJdbc.connection;
ResultSet rs=con.prepareStatement(sqlString).executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
Vector vtitle= new Vector();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
vtitle.add(rsmd.getColumnName(i));
}
collection.add(vtitle);
while(rs.next())
{
Vector vdata=new Vector();
for(int i=1;i<=rsmd.getColumnCount();i++){

vdata.add(rs.getObject(i));

}collection.add(vdata);
}
}catch(SQLException e){
e.printStackTrace();
collection=null;
}
return collection;
}

连接数据库并且遍历数据,为啥不加下面这句话,就会数据库显示表格信息就会少一行?
for(int i=1;i<=rsmd.getColumnCount();i++)
{
vtitle.add(rsmd.getColumnName(i));
}
collection.add(vtitle);
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯癫行者 2014-06-11
  • 打赏
  • 举报
回复
所以你的循环变量要从0开始,例如把这句for(int i=1;i<=rsmd.getColumnCount();i++) 改成:for(int i=0;i<rsmd.getColumnCount();i++)。 或者取列名和值的时候把i-1也行。
a15880859175 2014-06-11
  • 打赏
  • 举报
回复
没有,列是对的,就五列,行不加那句代码就会少一行, for(int i=1;i<=rsmd.getColumnCount();i++) { vtitle.add(rsmd.getColumnName(i)); } collection.add(vtitle);
疯癫行者 2014-06-11
  • 打赏
  • 举报
回复
getColumnName(int)里面的参数是从0开始的,所以你把第一列给弄丢了。
疯癫行者 2014-06-11
  • 打赏
  • 举报
回复
看上去好像是少了一列吧?

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧