为何不能讲数据库中读出的被容赋值给JavaBean?

来一个呀来一个 2008-09-04 11:38:22
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));
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;
}
...全文
102 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyxlh 2008-09-05
  • 打赏
  • 举报
回复
逻辑上看没有问题,既然能print出,那么取值没有问题,赋值的问题?自己调试下看看!
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kittaaron 的回复:]
System.out.print(rs.getInt(1) + " ");
能print出来值?那检查下你的BEAN里方法有没问题哪.
[/Quote]
是的,能print出值。。。
gaochangquan 2008-09-05
  • 打赏
  • 举报
回复
SQL语句问题吧,select * from tally order by payDate desc ,把 * 改成所需字段名试试看。。。
kittaaron 2008-09-05
  • 打赏
  • 举报
回复
System.out.print(rs.getInt(1) + " ");
能print出来值?那检查下你的BEAN里方法有没问题哪.
  • 打赏
  • 举报
回复
我修改成下面的内容,依然是输出的空值啊!!!



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;
}
  • 打赏
  • 举报
回复
不管怎样,谢谢大家哦,我今天找到了问题出在哪里了,下面那个main方法调用的时候,没有把ArrayList的值传递给Tally类的实例,所以总是输出的值为空!
happyxlh 2008-09-05
  • 打赏
  • 举报
回复
i++
happyxlh 2008-09-05
  • 打赏
  • 举报
回复
你的i一直都是0 那么就一直只能有一条 把i放在循环里边!
  • 打赏
  • 举报
回复
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里边的属性赋值!郁闷
  • 打赏
  • 举报
回复
谢谢大侠,我试试哈,害虫大哥,哈哈。。。
wangyi123 2008-09-04
  • 打赏
  • 举报
回复
zhj92lxs 2008-09-04
  • 打赏
  • 举报
回复
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;
}
  • 打赏
  • 举报
回复
我再把我的全部代码发过来,大家看下哈
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("");
}
}
}
love_n_forever 2008-09-04
  • 打赏
  • 举报
回复
你这个赋完值后应该只加载一条吧,tally放到循环里就ok了应该

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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