高手救命啊!怎么从数据库中取数据

ourdsky 2010-03-13 04:00:34
这是向数据库存数据的程序
public boolean addUser(User user){
boolean b=false;
try {
psm=con.prepareStatement("insert into tusers" +
"(username,password,age,sex,mobile,address,love,email,discription)" +
" values(?,?,?,?,?,?,?,?,?)");

psm.setString(1, user.getUsername());
psm.setString(2, user.getPassword());
psm.setInt(3, user.getAge());
psm.setInt(4, user.getSex());
psm.setString(5, user.getMobile());
List adds=user.getAddress();
String address="";
Iterator it=adds.iterator();
while(it.hasNext()){
address+=it.next();
}
psm.setString(6, address);
List loves=user.getLove();
Iterator itloves=loves.iterator();
String love="";
while(itloves.hasNext()){
love+=itloves.next();
}
psm.setString(7, love);

psm.setString(8, user.getEmail());
psm.setString(9, user.getDiscription());
int i=psm.executeUpdate();
if(i==1){
b=true;
}else{
b=false;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close();
}
return b;
}
简单的说就是把“看书”,“运动”等爱好依List的形式存入了数据库,但取从数据库中取时出现了麻烦:从数据库中取到的数据应该是个字符串,但没办法把依list的形式存的数据循环出来了。
这是从数据库中取数据的程序
public User queryByName(String username){
User user=new User();
try {
psm=con.prepareStatement("select * from tusers where username=?");
psm.setString(1, username);
rs=psm.executeQuery();
while(rs.next()){
user.setId(rs.getInt(1));
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setAge(rs.getInt(4));
user.setSex(rs.getInt(5));
user.setMobile(rs.getString(6));
List adds=new ArrayList();
Iterator it=adds.iterator();
for(int i=0;i<rs.getString(7).length();i++){

}

写到这不会写了,麻烦高手帮一下
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.close();
}
return user;
}
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ourdsky 2010-03-13
  • 打赏
  • 举报
回复
太感谢楼上各位了。按照zealot_tang的写法的确能读出来了,但是就是[运动,上网]按这种方式显示的,能不能把周围的方框去掉?先谢谢各位了。
qingyuan18 2010-03-13
  • 打赏
  • 举报
回复
写的时候:

List adds=user.getAddress();
String address="";
Iterator it=adds.iterator();
while(it.hasNext()){
address+=it.next()+",";
}
psm.setString(6, address);
List loves=user.getLove();
Iterator itloves=loves.iterator();
String love="";
while(itloves.hasNext()){
love+=itloves.next()+",";
}
psm.setString(7, love);

读的时候:

String[] addrsTmp = rs.getString(7).split(",");
List adds=new ArrayList();
for(int i=0,len=addrsTmp.length;i<len;i++)
{
adds.add(addrsTmp[i]);
}
user.setAddress(adds);

ourdsky 2010-03-13
  • 打赏
  • 举报
回复
说的的确很对,现在确实遇到了这样的问题,能不能再具体点。这方面我不是很熟悉。
mucrea 2010-03-13
  • 打赏
  • 举报
回复
你在存入数据库时
List adds=user.getAddress();
String address="";
Iterator it=adds.iterator();
while(it.hasNext()){
address+=it.next();
}
各个地址只是链接成了一个串address存入数据库的,并没有用任何的分割符将其分开,这样你在从数据库中取出后就根本没法判断各个地址了。建议再存入时先转译分割符,在分隔。取出时按分隔符分隔将其存入list中,然后再反转译分隔符就ok啦!

67,513

社区成员

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

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