这是向数据库存数据的程序
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;
}

解决方案 »

  1.   

    你在存入数据库时
    List adds=user.getAddress();
    String address="";
    Iterator it=adds.iterator();
    while(it.hasNext()){
    address+=it.next();
    }
    各个地址只是链接成了一个串address存入数据库的,并没有用任何的分割符将其分开,这样你在从数据库中取出后就根本没法判断各个地址了。建议再存入时先转译分割符,在分隔。取出时按分隔符分隔将其存入list中,然后再反转译分隔符就ok啦!
      

  2.   

    写的时候: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);
      

  3.   

    太感谢楼上各位了。按照zealot_tang的写法的确能读出来了,但是就是[运动,上网]按这种方式显示的,能不能把周围的方框去掉?先谢谢各位了。