本人用eclipse写servlet访问数据库。查询结果很奇怪。查询代码如下
try 
  { 
    
   String drname = "sun.jdbc.odbc.JdbcOdbcDriver";//这些是连接数据库的驱动 
    
   Class.forName(drname); 
    
   String url = "jdbc:odbc:myjdbc"; 
   conn = DriverManager.getConnection(url,"sa","123"); 
    
   stmt = conn.createStatement(); 
   rs = stmt.executeQuery("select * from usertable");//查询数据库表 表名为user 
   while(rs.next()) 
   { 
    dos.writeUTF(rs.getString("userid"));//得到字段ID 和字段name 内容 
    dos.writeUTF(rs.getString("password")); 
   }     rs.close(); 
   stmt.close(); 
   conn.close(); 
  }catch(Exception e) 
  { 
    
  } 
返回的数据只有password字段的5个值(user表里有5行数据)。
后来我把dos.writeUTF(rs.getString("password"));这句话注释掉,返回的数据就只有userid里第2、4行的值。
这是为什么呢? 

解决方案 »

  1.   

    数据库里userid如果是用int存储的,要用re.getInt()来去值
      

  2.   

    第一种是被password覆盖了,第二种是不是 你表中的userId是空的 阿?
      

  3.   

    dos是什么对象?
    writeUTF();循环里两次调用这方法,那么值会覆盖前一个!
    dos.writeUTF(rs.getString("userid"));执行到这里时,它已经把userid写入进去了,
    然后又调用这方法写入password,所以在内存中只会有你最后的值了!
    你要改进的地方就是这个while()里的代码!
      

  4.   


    其实也可以用.getString()的,容器会自动拆装转换
      

  5.   

    那样写肯定会被覆盖啊,最好每个表对应写一个javabean,这样更容易理解,在说一些增上改查的东西也不要写在servlet里面啊
      

  6.   

    writeUTF这样写不会覆盖的。问题出在我的客户端的READutf