我再把我的全部代码发过来,大家看下哈
package familyaccounts;
import java.sql.*;
import java.util.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import familyaccounts.Tally;public class DBConnection {    /**表示与数据库的连接*/
    private Connection conn;    /**表示SQLServer的路径*/
    private String url;    /**表示机器的名称*/
    private String serverName;    /**存储端口号*/
    private String portNumber;    /**存储数据库名称*/
    private String databaseName;    /**存储用户名*/
    private String userName;    /**存储密码*/
    private String password;    /**构造方法*/
    public DBConnection() {
        url="jdbc:microsoft:sqlserver://";
        serverName="localhost";
        portNumber="1433";
        databaseName="FamilyAccounts";
        userName="sa";
        password="";
    }    /**return  Url,服务器名称,端口号和数据库名称*/
    private String getConUrl()
    {
        return url+serverName+";"+portNumber+";databaseName="+databaseName+";";
    }    //定义返回连接的方法
    public Connection getConnection()
    {
        try
        {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            //建立连接
            conn=DriverManager.getConnection(getConUrl(),userName,password);
            if(conn!=null)
            {
                System.out.println("连接成功!");
            }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
            System.out.println("getConnection()内得跟踪错误:"+ex.getMessage());
        }
        return conn;
    }    /**用add方法向数据库中增加记录*/
    public void add(String type,String price)
    {
        /**用format方法将当前时间进行截取*/
        Date date=new Date();
        String shijian;
        SimpleDateFormat formater=new SimpleDateFormat();
        formater.applyPattern("yyyy-MM-dd");
        shijian=formater.format(date);        /**定义插入的SQL语句*/
        String insert="insert into tally(type,price,payDate) values(?,?,?)";
        try
        {
            conn=getConnection();
            PreparedStatement pstmt=conn.prepareStatement(insert);
            pstmt.setString(1,type);
            pstmt.setString(2,price);
            pstmt.setString(3,shijian);            pstmt.executeUpdate();
            System.out.println("数据已插入!");            pstmt.close();
            conn.close();
        }
        catch(SQLException se)
        {
            System.out.println(se);
        }
    }    public ArrayList<Tally> getAll()
    {
        Tally t=new Tally();
        ArrayList<Tally> arraylist=new ArrayList<Tally>();
        try
        {
            conn=getConnection();
            Statement smt=conn.createStatement();
            ResultSet rs=smt.executeQuery("select * from tally order by payDate desc");
            int i=0;
            while(rs.next())
            {
                //为什么这里加载不上数据?
                  t.setTallyID(rs.getInt(1));
                t.setType(rs.getString(2));
                t.setPrice(rs.getString(3));
                t.setPayDate(rs.getString(4));
                //下面这些代码能够正常的输出,但是就是无法正确赋值给t
                System.out.println(" ");
                System.out.print(rs.getInt(1)+" ");
                System.out.print(rs.getString(2)+" ");
                System.out.print(rs.getString(3)+" ");
                System.out.println(rs.getString(4));
                arraylist.add(i,t);
            }            rs.close();
            smt.close();
            conn.close();
        }
        catch(SQLException se)
        {
            System.out.println(se);        }
         return arraylist;
    }    /**
     * 这是main方法。
     * 它演示SQL中JDBC连接数据库的方法
     */
    public static void main(String[] args)
    {
        Tally ta=new Tally();
        ArrayList<Tally> al=new ArrayList<Tally>();
        DBConnection db=new DBConnection();
        db.getConnection();
        al=db.getAll();
        for(int i=0;i<al.size();i++)
        {
            System.out.print(ta.getTallyID()+" ");
            System.out.print(ta.getType()+" ");
            System.out.print(ta.getPrice()+" ");
            System.out.print(ta.getPayDate());
            System.out.println("");
        }
    }
}

解决方案 »

  1.   

    public ArrayList <Tally> getAll()
        {
            ArrayList <Tally> arraylist=new ArrayList <Tally>();
            try
            {
                conn=getConnection();
                Statement smt=conn.createStatement();
                ResultSet rs=smt.executeQuery("select * from tally order by payDate desc");
                int i=0;
                while(rs.next())
                {
                    //为什么这里加载不上数据?
    Tally t=new Tally();
                    t.setTallyID(rs.getInt(1));
                    t.setType(rs.getString(2));
                    t.setPrice(rs.getString(3));
                    t.setPayDate(rs.getString(4));
                    System.out.println(" ");
                    System.out.print(rs.getInt(1)+" ");
                    System.out.print(rs.getString(2)+" ");
                    System.out.print(rs.getString(3)+" ");
                    System.out.println(rs.getString(4));
                    arraylist.add(i,t);
                }            rs.close();
                smt.close();
                conn.close();
            }
            catch(SQLException se)
            {
                System.out.println(se);        }
            return arraylist;
        }
      

  2.   

    你这个赋完值后应该只加载一条吧,tally放到循环里就ok了应该
      

  3.   

    0 null null null
    0 null null null
    0 null null null
    0 null null null
    0 null null null
    我试了还是不行啊,还是这样的运行结果,那几个System.out.println()方法能够正常的输出,就是我调试的时候发现t.setTallyID(rs.getInt(1)); 
    t.setType(rs.getString(2)); t.setPrice(rs.getString(3)); t.setPayDate(rs.getString(4)); 这几个方法似乎不能给JavaBean里边的属性赋值!郁闷
      

  4.   

    我修改成下面的内容,依然是输出的空值啊!!!public ArrayList<Tally> getAll()
        {
            ArrayList<Tally> arraylist=new ArrayList<Tally>();
            try
            {
                conn=getConnection();
                Statement smt=conn.createStatement();
                ResultSet rs=smt.executeQuery("select * from tally order by payDate desc");
                if(rs.next())
                {
                    for(int i=0;i<rs.getRow();i++,rs.next())
                    {                
                        Tally t=new Tally();
                        //为什么这里加载不上数据?
                        t.setTallyID(rs.getInt(1));
                        t.setType(rs.getString(2));
                        t.setPrice(rs.getString(3));
                        t.setPayDate(rs.getString(4));
                        System.out.println(" ");
                        System.out.print(rs.getInt(1) + " ");
                        System.out.print(rs.getString(2) + " ");
                        System.out.print(rs.getString(3) + " ");
                        System.out.println(rs.getString(4));
                        arraylist.add(i, t);
                    }                rs.close();
                    smt.close();
                    conn.close();
                }        }
            catch(SQLException se)
            {
                System.out.println(se);        }
             return arraylist;
        }
      

  5.   

    System.out.print(rs.getInt(1) + " "); 
    能print出来值?那检查下你的BEAN里方法有没问题哪.
      

  6.   

    SQL语句问题吧,select * from tally order by payDate desc ,把 * 改成所需字段名试试看
      

  7.   

    逻辑上看没有问题,既然能print出,那么取值没有问题,赋值的问题?自己调试下看看!
      

  8.   

    不管怎样,谢谢大家哦,我今天找到了问题出在哪里了,下面那个main方法调用的时候,没有把ArrayList的值传递给Tally类的实例,所以总是输出的值为空!