有一表 USER 字段 ID ,NAME result = sta.executeQuery(sql);
 if(result.next()){
 System.out.print(" id== " + result.getString(4) + " <--->");
 System.out.println(" NAME== " + result.getString(5));
 }
=====
这样运行一次 遍历出来的一个结果,如何遍历出所有的值呢?
====
请大家帮忙速度解决一下。在线等待中。

解决方案 »

  1.   

    while(result.next()){
    System.out.print(" id== " + result.getString(4) + " <--->");
    System.out.println(" NAME== " + result.getString(5));
    }
      

  2.   

    result = sta.executeQuery(sql);
    if(result.next()){
       System.out.print(" id== " + result.getString(4) + " <--->");
       System.out.println(" NAME== " + result.getString(5));
    }
    =====
    这样运行一次 遍历出来的一个结果,如何遍历出所有的值呢?
    ====你的代码是循环遍历所有的数据啊 ,有多少条遍历多少次啊 ,不知道你想做什么你是想把所有的记录放到一起,还是怎么弄 ?
      

  3.   


    private static Connection conn = null;
    public DBDao() {
    conn = DBConnection.startConnection();
    System.out.println("[LOG:connection start !!]");
    }
    public List<Object> getList(String sqlString) throws SQLException {
                     
    Statement st = conn.createStatement();
    ResultSet rSet = st.executeQuery(sqlString);
    ResultSetMetaData rData = rSet.getMetaData();
    List<Object> list = new ArrayList<Object>();
    while (rSet.next()) {
    Map<Object,Object> obj = new HashMap<Object,Object>();
    for (int i = 1; i <= rData.getColumnCount(); i++) {
    obj.put(rData.getColumnName(i).toLowerCase(), rSet.getObject(i));
    }
    list.add(obj);
    }
    rSet.close();
    DBConnection.close(conn, st, rSet);
    System.out.println("[LOG:"+list.size()+"  row in list]");
    return list;
    }
      

  4.   


    private static Connection conn = null;
    public DBDao() {
    conn = DBConnection.startConnection();
    System.out.println("[LOG:connection start !!]");
    }public List<Object> getList(String sqlString) throws SQLException {
    Statement st = conn.createStatement();
    ResultSet rSet = st.executeQuery(sqlString);
    ResultSetMetaData rData = rSet.getMetaData();
    List<Object> list = new ArrayList<Object>();
    while (rSet.next()) {
    Map<Object,Object> obj = new HashMap<Object,Object>();
    for (int i = 1; i <= rData.getColumnCount(); i++) {
    obj.put(rData.getColumnName(i).toLowerCase(), rSet.getObject(i));
    }
    list.add(obj);
    }
    rSet.close();
    DBConnection.close(conn, st, rSet);
    System.out.println("[LOG:"+list.size()+"  row in list]");
    return list;
    }
      

  5.   

    便利结果集  java里提供了迭代器,用while和if也能查到结果,不同的是while是用来便利所有数据的,常用于页面展示,if则是查出一条数据  常用于表单的修改
      

  6.   

    通过java反射机制也可以封装jdbchttp://blog.csdn.net/a600423444/article/details/6540159
    package org.test;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import org.jdbc.domain.User;
    import org.local.jdbc.JdbcUtilSingle;public class ORMTest {
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    User user = (User)getObject("select id as Id,name as Name,birthday as Birthday,money as Money from user where id=2", User.class);
    System.out.println(user.getMoney());
    System.out.println(user.getBirthday());
    }

    static Object getObject(String sql, Class clz){
    Connection conn = null;
    PreparedStatement psmt = null;
    ResultSet rs = null;

    try{
    conn = JdbcUtilSingle.getInstance().getConnection();//数据库连接对象
    psmt = conn.prepareStatement(sql);
    rs = psmt.executeQuery();//查询结果集

    ResultSetMetaData rsmd = rs.getMetaData();//查询结果元数据信息
    int count = rsmd.getColumnCount();//查询结果列数
    Object object = clz.newInstance();//通过反射类,实例化对象
    Method[] methods = object.getClass().getDeclaredMethods();//返回类中所有方法,不包括继承的方法

    if(rs.next()){
    for(int i=1;i<=count;i++){
    String methodName = "set"+rsmd.getColumnLabel(i);//组织为setter、getter型方法名称
    for(Method m:methods){
    if(methodName.equals(m.getName())){//若方法存在,则使用invoke调用该方法
    m.invoke(object, rs.getObject(rsmd.getColumnLabel(i)));
    }
    }
    }
    }

    return object;
    }catch(Exception e){
    System.out.println(e.getMessage());
    }finally{
    JdbcUtilSingle.free(rs,psmt,conn);
    }
    return null;
    }
    }
      

  7.   

    result = sta.executeQuery(sql);
     if(result.next()){
     System.out.print(" id== " + result.getString(4) + " <--->");
    System.out.println(" NAME== " + result.getString(5));
     }
    =====修改
    一下
    result = sta.executeQuery(sql);
    while(result.next()){
    result.geiString(4);
    }就可以遍历所有
      

  8.   

    将if(result.next())判断改成while(result.next())判断,
    if判断只是查出一条数据,while是所有数据。
      

  9.   

    开始以为是个小白贴,后来发现是需求描述不清if(rs.next){
       getRsRowLength(rs);
    }public int getRsRowLength(ResultSet rs){
       int rowLength = 0;
       while(true){
          try{
             rs.get(rowLength++);
          }catch(Excpetion e){
             return rowLength;
          }
       }
    }
    基本思路如上,楼主下次需求要描述清楚