一条sql在sqlserver上运行能找出3条数据,但在java程序里运行后只能找出两条数据,
传入的是sql,经调试rs.next()少循环了一次,求解
/*
*
* 查询sql处理
*/
public Vector<Hashtable<String, String>> getAllMenuName(String sql){
Connection conn=this.getConn();
PreparedStatement st=null;
ResultSet rs=null;
Vector<Hashtable<String, String>> vec=new Vector<Hashtable<String, String>>();
try {
st=conn.prepareStatement(sql);
rs=st.executeQuery();
if(rs.next()){
ResultSetMetaData rsmd=rs.getMetaData();
while(rs.next()){
Hashtable<String, String> resultht=new Hashtable<String, String>();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
resultht.put(rsmd.getColumnName(i),""+rs.getString(i));
}
vec.add(resultht);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("size:"+vec.size()+" sql:"+sql);
return vec;
}
[最优解释]
程序设计逻辑错误,你这句话:
if(rs.next()){
就已经跳到第一行了,所以后面的:
while(rs.next()){
就只能从第二行以后才开始了。
[其他解释]