java连接数据库查询结果不显示第一条

连接的为access数据库源代码如下:if(e.getSource()==subMenu3[0]){classidT.setText("");nameT.setText(... 连接的为access数据库源代码如下:
if (e.getSource() == subMenu3[0]) {
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");

if ((classidT.getText().trim()).equals("")) {
String idclass = JOptionPane.showInputDialog("请输入年级");
String strSQL = "select * from member where classid='" +
idclass +
"'";
try {
rs = st.executeQuery(strSQL);
displayres(rs);

} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败");
}

} else {
String idclass = classidT.getText();
String strSQL = "select * from member where classid='" +
idclass +
"'";
try {
rs = st.executeQuery(strSQL);
displayres(rs);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败");
}
}
}
public void displayres(ResultSet rs1) throws SQLException {
//定位到达第一条记录

boolean moreRecords = rs1.next();

//如果没有记录,则提示一条消息

if (!moreRecords) {

JOptionPane.showMessageDialog(null, "无此记录");

return;

}
try {

//获取数据
getNextRow(rs1);

//刷新Table
c.validate();

}

catch (SQLException sqlex) {

sqlex.printStackTrace();

}
}

public void getNextRow(ResultSet rs2) throws
SQLException {
int count = 1;
while (rs2.next()) {
name = " 姓名:" + rs2.getString(3);
age = " 年龄:" + rs2.getString(6) + " 学校:";
department = rs2.getString(4) + "\n";
textT.append(count + "." + name + age + department);
count++;
}
}
}
查询出来的结果在文本区域内不显示第一条符合条件的,其它条正常显示,我实在找不出来了,还请帮忙。
正确的应该怎么写呢? 能正常显示我加分。getNextRow(ResultSet rs2)方法以后其它查询要调用到的嘛,如果用while(rs.next()){}如何提示无此记录呢?
展开
 我来答
lujaho
2009-08-28 · TA获得超过597个赞
知道小有建树答主
回答量:261
采纳率:100%
帮助的人:254万
展开全部
这个其实很简单的`弄清楚next()的功能与处理机制就行了``
rs.next()后,结果集中的游标首先判断结果集中是否还有下一条记录,如果有游标定位到下一条记录位置上``你上面代码在取数据前next()两次,所以是从第二条记录取数据`
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刚强还静谧灬瑰宝5950
2009-08-28 · TA获得超过744个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:448万
展开全部
第一次next已经取出来了。。。。结果被第二次覆盖了。。。

结果集的显示应该用next的迭代器模式。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花生玩转PHP
2009-08-28 · TA获得超过197个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:52.3万
展开全部
不能用boolean moreRecords = rs1.next();来判断,这样就把第一条记录跳过去了。你改成
boolean b=false;
while(rs1.next())
{
b=true;//说明有记录
......读取数据的函数
}
if(b)
{
....有记录
}else{
....无记录
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
渡轮555
2009-08-28 · TA获得超过534个赞
知道小有建树答主
回答量:863
采纳率:100%
帮助的人:656万
展开全部
rs1.next();
这时游标已经向下一行了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveweizaiwan
2009-08-28 · TA获得超过425个赞
知道小有建树答主
回答量:460
采纳率:0%
帮助的人:273万
展开全部
这可以用存储过程来实现!
投机取巧的办法呢!
就是:你不是用一个count变量来进行控制吗?你就用一个if条件来进行判断啊,如:if(count != 1){}时就用append进行追加。那么第一条不就不进行显示了。
你看行不??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式