import java.util.Vector;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class VectorTest {
    public VectorTest() {
    }
    String a;
    String b;
    public String toString(){
        return a+" "+b;
    }
    public static void main(String[] args) {
        Vector test=new Vector();
        VectorTest vectortest = new VectorTest();
        vectortest.a="a";
        vectortest.b="b";
        test.add(vectortest);
        vectortest.a="b";
        vectortest.b="a";
        test.add(vectortest);
        System.out.println(test);
        
    }
}
这样的输出结果总是 后一个的【b a,b a】前面的总 是被覆盖 为什么啊,如果我要把前面的和后面的都输出要怎么做呢?就像【a b,b a】

解决方案 »

  1.   

    你add到vector的是同一个引用,即vectortest
    你new两个vectortest就可以了
      

  2.   

    那我从数据库中取值。
    package com.db;import java.sql.*;
    import java.util.Vector;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class DatebaseTest {
        public DatebaseTest() {
        }    String name;
        String sex;
        String age;    public Connection getConnection() {
            Connection con = null;
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                con = DriverManager.getConnection("jdbc:odbc:db");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return con;
        }    public Vector dateQuery(String sql) {
            Vector v = new Vector();
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }    public String toString() {
            return "\n姓名:" + name + "  " + "性别:" + sex + "  " + "年龄:" + age + "\n";    }    public static void main(String[] args) {
            DatebaseTest db = new DatebaseTest();
            System.out.println(db.dateQuery("select * from Student"));    }
    }
    这样做  就只能取一个值出来,要怎么做才好呢?
      

  3.   

    public Vector dateQuery(String sql) {
            Vector v = new Vector();
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
    放到另外一个位置new
     public Vector dateQuery(String sql) {
    //        Vector v = new Vector();
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    Vector v = new Vector();
                    count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
    结贴给分吧,谢谢
      

  4.   

    这位朋友谢谢你,不过你说的方法不行,不能够返回Vector ,我修改了下
    public Vector dateQuery(String sql) {
            Vector v = new Vector();
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
    放到另外一个位置new
     public Vector dateQuery(String sql) {
           Vector v = null;
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    v = new Vector();
                    count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
    这样输出的结果 还是只有1个。
      

  5.   

    看了啊,你说得对,我明白了,谢谢你啊,可是我用数据库查询后得到resultset对象后用两个DatebaseTest对象装好后,放入vector 就是不能够按照我想的输出 上面那个代码 就是看了你的解答后改的,结果只能输出一行数据了,好像只存入了一个对象一样,我晕了
      

  6.   

    修改了下,应该可以.
    public Vector dateQuery(String sql) {
            Vector v = new Vector;
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {                count++;
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
      

  7.   

    public Vector dateQuery(String sql) {
            Vector v = new Vector;
            ResultSet rs = null;
            DatebaseTest a = new DatebaseTest();
            DatebaseTest b = new DatebaseTest();
            try {
                Connection con = this.getConnection();
                Statement st = con.createStatement();
                rs = st.executeQuery(sql);
                int count = 0;
                while (rs.next()) {
                    DatebaseTest a = new DatebaseTest();//在这里New,每循环一次就创建一个对像
            DatebaseTest b = new DatebaseTest();//在这里New,每循环一次就创建一个对像
                    count++;//干什么用的????一三五,二四六?有什么意义吗?
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }            rs.close();
                st.close();
                con.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }        return v;
        }
      

  8.   

    while (rs.next()) {
                    DatebaseTest a = new DatebaseTest();//在这里New,每循环一次就创建一个对像
            DatebaseTest b = new DatebaseTest();//在这里New,每循环一次就创建一个对像
                    count++;//干什么用的????一三五,二四六?有什么意义吗?
                    if (count == 1) {
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    } else if (count == 2) {
                        b.name = rs.getString(1);
                        b.sex = rs.getString(2);
                        b.age = rs.getString(3);
                        v.add(b);                }            }与下面这样有区别吗??while (rs.next()) {
                    DatebaseTest a = new DatebaseTest();//在这里New,每循环一次就创建一个对像
                        a.name = rs.getString(1);
                        a.sex = rs.getString(2);
                        a.age = rs.getString(3);
                        v.add(a);
                    
                }
    有什么区别????都只数据库里的每一条刻录的集合
      

  9.   

    这些都是 java基础知识,看看书,补补基础就解决了,好运