package library;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class BorrowInfo extends JFrame implements ActionListener
{
ResultSet rs;
JLabel lb1=new JLabel("请输入学生号:");
JTextField jtf1=new JTextField(10);
JTextArea jta=new JTextArea(20,30);
JLabel lb=new JLabel("借阅信息:");
JButton bt=new JButton("\u5173\u95ED");
JButton bt1=new JButton("查询");
private final JLabel label = new JLabel("New label");
public BorrowInfo()
{
super("查询借阅信息");
Container c=getContentPane();
getContentPane().setLayout(null);
lb.setBounds(10, 170, 71, 15);
getContentPane().add(lb);
jta.setBounds(10, 195, 464, 181);
getContentPane().add(jta);
bt.setBounds(91, 166, 73, 23);
getContentPane().add(bt);
lb1.setBounds(178, 170, 98, 15);
getContentPane().add(lb1);
jtf1.setBounds(286, 167, 115, 21);
getContentPane().add(jtf1);
bt1.setBounds(411, 166, 64, 23);
getContentPane().add(bt1);
label.setIcon(new ImageIcon(this.getClass().getResource("/image/Library.jpg")));
label.setBounds(0, -3, 484, 164);
getContentPane().add(label);
bt1.addActionListener(this);
bt.addActionListener(this);
setSize(500,425);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==bt)
{
this.dispose();
}
if(e.getSource()==bt1)
{
String stuid=jtf1.getText();
String sqlstr="select * from bookborrow where stuid='"+stuid+"'";
rs=connection.getResult(sqlstr);
try
{
jta.setText("");
while(rs.next())
{
jta.append("借阅号:"+rs.getString(1)+","+"借书时间:"+rs.getString(3)+","+"\n"+"还书时间:"+rs.getString(4)+","+"\n"+"图书状态:"+rs.getString(5)+"\n");
}
if(!(rs.next())){
jta.append("对不起,没有此借阅信息");
}
}
catch(Exception pe)
{
pe.printStackTrace();
}
}
}
}
为什么查询的数据有或没有,都会运行 jta.append("对不起,没有此借阅信息"); 这句话
------解决方案--------------------
while(rs.next())
{
jta.append("借阅号:"+rs.getString(1)+","+"借书时间:"+rs.getString(3)+","+"\n"+"还书时间:"+rs.getString(4)+","+"\n"+"图书状态:"+rs.getString(5)+"\n");
}
这里已经把指针移动最后一行了
你在这之后 next当然是false啦,所以无论有无数据都是false
------解决方案--------------------
1 楼正解!
rs.next()就是将当前指针移到下一行数据,前提是有下一行
while(rs.next()){..}
指针已经移到最后了,也就是没有下一行了,所以rs.next()返回的是false,
所以,
if(!(rs.next())){
jta.append("对不起,没有此借阅信息");
}
肯定会执行!
------解决方案--------------------
你把if判断移动到while前面就可以了,因为你做了while判断之后无论是否有数据都已经在最后一条数据了
------解决方案--------------------
while(rs.next()) while会将rs一直next() 下去,直至rs.next()为false时。
所以 就是楼上的办法了,先判断if(!rs.next()),确保rs非空时,再进行while循环,读取结果集中的数据。
------解决方案--------------------
加2 个 话就一层层往下找的。