看程序片段:(程序没错)
String sql="SELECT DISTINCT username from rightanswer";
try{
conn = DriverManager.getConnection(sConnStr, sqluser, sqlpassword);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
rs.next();
while(!rs.isAfterLast())
{
username[i]=rs.getString("username");
i++;
rs.next();
}
我单步跟踪到WHILE之前,再一步一步运行,结果i=2;正确。
但我要是单步跟踪到WHILE已经结束的地方,一看i=9 这是怎么回事??单步跟踪和直接跳过竟然结果不一样。而且按理说String sql="SELECT DISTINCT username from rightanswer";
这个应该屏蔽了重复的
当一步一步跟踪时,i=2,username结果为 iori和lovesky
但直接跳过的跟踪时,当i=9时,却发现username结果 有5个iori和4个lovesky
奇怪吧。不知道为什么,按理说,执行代码都一样,差别怎么就这么大呢?
String sql="SELECT DISTINCT username from rightanswer";
try{
conn = DriverManager.getConnection(sConnStr, sqluser, sqlpassword);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
rs.next();
while(!rs.isAfterLast())
{
username[i]=rs.getString("username");
i++;
rs.next();
}
我单步跟踪到WHILE之前,再一步一步运行,结果i=2;正确。
但我要是单步跟踪到WHILE已经结束的地方,一看i=9 这是怎么回事??单步跟踪和直接跳过竟然结果不一样。而且按理说String sql="SELECT DISTINCT username from rightanswer";
这个应该屏蔽了重复的
当一步一步跟踪时,i=2,username结果为 iori和lovesky
但直接跳过的跟踪时,当i=9时,却发现username结果 有5个iori和4个lovesky
奇怪吧。不知道为什么,按理说,执行代码都一样,差别怎么就这么大呢?
---------
这样看好像也看不出什么啊,难道你select出来的数据不一样?
rs.next();
while(!rs.isAfterLast())
{
username[i]=rs.getString("username");
i++;
rs.next();
}
改成
while(rs.next())
{
username[i]=rs.getString("username");
i++;
}
试试
你把
while(!rs.isAfterLast())
{
username[i]=rs.getString("username");
i++;
rs.next();
}
改为
while(rs.next())
{
username[i]=rs.getString("username");
i++;
}
i变化不对吗?
要是不想让他变还放到while里面干什么?