本人用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行的值。
这是为什么呢?
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行的值。
这是为什么呢?
writeUTF();循环里两次调用这方法,那么值会覆盖前一个!
dos.writeUTF(rs.getString("userid"));执行到这里时,它已经把userid写入进去了,
然后又调用这方法写入password,所以在内存中只会有你最后的值了!
你要改进的地方就是这个while()里的代码!
其实也可以用.getString()的,容器会自动拆装转换