为什么只循环了一次啊

mailmac 2005-03-17 09:32:57
我连到SQLserver的一张表上,用循环读取表中的所有记录,为什么只返回了第一条记录啊?刚上手,希望大家帮忙~~急
以下是代码:

import java.applet.Applet;
import java.awt.*;
import java.sql.*;

public class atwapt extends Applet
{
public void init()
{
resize(600,600);
}

public void paint(Graphics g){

try
{
int[][] node=new int[1000][3];
int i=0;
int tmphead,tmpend;

this.setForeground(Color.black);

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=×××";
String aisql="select * from ainode";

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con=java.sql.DriverManager.getConnection(url,"sa","×××");


Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet result=stmt.executeQuery(aisql);

while(result.next()){
System.out.println(result.getString("nodex"));
System.out.println(result.getString("nodey"));
node[i][0]=result.getInt("nodex");
node[i][1]=result.getInt("nodey");
node[i][2]=result.getInt("distance");
i=i+1;
}


String aisql1="select headnode,endnode from airoad";
Statement stmt1=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet result1=stmt1.executeQuery(aisql1);

while(i>=0&&result1.next()){
System.out.println(result1.getString("headnode"));
System.out.println(result1.getString("endnode"));
tmphead=result1.getInt("headnode");
tmpend=result1.getInt("endnode");
g.drawLine(node[tmphead][0]*10,node[tmphead][1]*10,node[tmpend][0]*10,node[tmpend][0]*10);
i=i-1;
}
result1.close();
result.close();
stmt.close();
con.close();
}catch(SQLException ex){} catch (ClassNotFoundException e) {
//TODO 自动生成 catch 块
e.printStackTrace();
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}


}
}
...全文
184 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
keen1982 2005-03-18
  • 打赏
  • 举报
回复
我有想法!!!!!


我希望楼主能把sql语句直接放到数据库里查查看!!!!!!!!!!
asa516 2005-03-18
  • 打赏
  • 举报
回复
up
zhgj8750 2005-03-18
  • 打赏
  • 举报
回复
ResultSet对象好像没有row()方法啊!注意这个对象数据的存取是游标控制的,要获得记录集的行数,应该先将游标移到最后,然后用getRow()方法得到记录集的行数。即:
result.last();
int iCountNum = result.getRow();//iCountNum为result记录集的记录行数。
apollo333 2005-03-18
  • 打赏
  • 举报
回复
帮你顶。楼主分开测试一下,试试吧。
shan1119 2005-03-18
  • 打赏
  • 举报
回复
dd
ufouciyxtixu 2005-03-18
  • 打赏
  • 举报
回复
兄弟`这个问题我不懂`给你一句话`
当你在应用程序中写SQL代码的时候你的应用程序就会维护困难
``
mailmac 2005-03-18
  • 打赏
  • 举报
回复
算了,先结帖了,散点分给大家
mailmac 2005-03-18
  • 打赏
  • 举报
回复
谢谢 zhgj8750(清风) 的提醒,试过了,记录集读取出来是100条
那是哪里的问题呢?
OnlyFor_love 2005-03-18
  • 打赏
  • 举报
回复
mailmac 2005-03-18
  • 打赏
  • 举报
回复
哭死了,项目要答辩了,还是一筹莫展
mailmac 2005-03-17
  • 打赏
  • 举报
回复
呃......突然想起result.row()返回的是Boolen,这个搞错了。
但我觉得问题还是出在result上,返回的数据集明显只有一条么,怎么回事呢?!!
mailmac 2005-03-17
  • 打赏
  • 举报
回复
我不知道还有什么可以检查,最最基本的就是循环里的System.out.println只运行了一次啊
我用System.out.println(result.row());结果是0
郁闷
捏造的信仰 2005-03-17
  • 打赏
  • 举报
回复
这东西最好跟踪一下变量的值。我们手中没数据库,靠猜也猜不出什么来。
mailmac 2005-03-17
  • 打赏
  • 举报
回复
是啊,很郁闷的,问了很多人,网上相关的问题也没有过
本来是用Statement stmt=con.createStatement();的
后来看网上说有具体参数,就又试了Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

结果都是一样的情况
junyh 2005-03-17
  • 打赏
  • 举报
回复
好象没有错误啊,
关注!!!
mailmac 2005-03-17
  • 打赏
  • 举报
回复
while(result.next()){
System.out.println(result.getString("nodex"));
System.out.println(result.getString("nodey"));
node[i][0]=result.getInt("nodex");
node[i][1]=result.getInt("nodey");
node[i][2]=result.getInt("distance");
i=i+1;
}


本来我这张表里应该有100条记录,我特地放了System.out.println来作为测试,结果只输出了第一条记录的数据
xitianjile 2005-03-17
  • 打赏
  • 举报
回复
是那里只循环一次??

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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