2 wang2679958237 wang2679958237 于 2016.01.16 22:56 提问

java界面里怎么将从数据库中按条件查询的结果显示在界面里。。急求

AirSelectpage.java:
import javax.swing.*;

import java.awt.event.*;
import java.sql.*;
public class AirSelectpage extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = -3695058594377827316L;
JLabel l;
JTextField t=new JTextField(15);
JButton jok;
JButton jBack;

String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:1433; DatabaseName=AirTicket";
String USER="sa";
String PASSWORD="123";
public void asPage(){
    JPanel p;
    p=new JPanel();
    l=new JLabel("请输入航班号:");
    jok=new JButton("确认");
    jBack=new JButton("返回");
    p.add(l);p.add(t);p.add(jok);p.add(jBack);
    add(p);
    setSize(600,400);
    setLocation(400,200);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    jok.addActionListener(this);
    jBack.addActionListener(this);
}
private Connection con;
private Statement stmt;
private ResultSet rs;
public void actionPerformed(ActionEvent e){
    if(e.getSource()==jok){
        String airnumber=t.getText().trim();
        if(airnumber.equals("")){
            JOptionPane.showMessageDialog(this,"对不起,请输入航班号!","错误!",JOptionPane.ERROR_MESSAGE);
        }
        else{
            try{
                Class.forName(driverName);
                con=DriverManager.getConnection(url,USER,PASSWORD);
                String sql="select 旅客.航班号,座位号,姓名,旅客.票号,票价,起点,终点,起飞时间,到达时间 from 旅客,航班,机票 where 航班.航班号=旅客.航班号 and 旅客.票号=机票.票号 and 旅客.航班号='"+airnumber+"'";//执行的sql语句
                stmt=con.createStatement();
                rs=stmt.executeQuery(sql);
                if(rs.next()){
                        new AirInformation();                   }
                else{
                    JOptionPane.showMessageDialog(this,"航班号不存在,请重新输入!","错误!",JOptionPane.ERROR_MESSAGE);
                }
            }
            catch(ClassNotFoundException ex){
                ex.printStackTrace();
            }
            catch(SQLException ex){
                ex.printStackTrace();
            }
        }
    }
    if(e.getSource()==jBack){
        Welpage wel=new Welpage();
        wel.wPage(null);
        this.dispose();
    }
}

}

AirInformation.java:
import javax.swing.*;

import java.sql.*;
public class AirInformation extends JFrame{
/**
*
*/
private static final long serialVersionUID = -2888751890568230979L;
// 定义组件
private JScrollPane scpDemo;
private JTable tabDemo;
// 构造方法
public AirInformation() throws SQLException{
// 窗体的相关属性的定义
super("JTable数据绑定示例");
this.setSize(1200,900);
this.setLayout(null);
this.setLocation(100,50);
// 创建组件
this.scpDemo = new JScrollPane();
this.scpDemo.setBounds(10,50,1050,300);
// 将组件加入到窗体中
add(this.scpDemo);
// 显示窗体
this.setVisible(true);
try{
// 获得连接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}
catch(Exception e){}
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=AirTicket","sa","123");
// 建立查询条件
String sql = "select 旅客.航班号,座位号,姓名,旅客.票号,票价,起点,终点,起飞时间,到达时间 from 旅客,航班,机票 where 航班.航班号=旅客.航班号 and 旅客.票号=机票.票号 and 旅客.航班号='A3001'";
PreparedStatement pstm = conn.prepareStatement(sql);
// 执行查询
ResultSet rs = pstm.executeQuery();
// 计算有多少条记录
int count = 0;
while(rs.next()){
count++;
}
rs=pstm.executeQuery();
// 将查询获得的记录数据,转换成适合生成JTable的数据形式
Object[][] info = new Object[count][9];
count = 0;
while(rs.next()){
info[count][0] = rs.getString("航班号");
info[count][1] = rs.getString("座位号");
info[count][2] = rs.getString("姓名");
info[count][3] = rs.getString("票号");
info[count][4] = Integer.valueOf(rs.getInt("票价"));
info[count][5] = rs.getString("起点");
info[count][6] = rs.getString("终点");
info[count][7] = rs.getTimestamp("起飞时间");
info[count][8] = rs.getTimestamp("到达时间");
count++;
}
// 定义表头
String[] title = {"航班号","座位号","姓名","票号","票价","起点","终点","起飞时间","到达时间"};
// 创建JTable
this.tabDemo = new JTable(info,title);
this.tabDemo.getTableHeader();
// 将JTable加入到带滚动条的面板中
this.scpDemo.getViewport().add(tabDemo);
}
}

当航班号为A3001  A3002。。。时,是可以显示出来的
当航班号为t.getText()时,就一片空白,什么都显示不了

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.16 23:01

下断点,调试String airnumber=t.getText().trim();是什么

wang2679958237
wang2679958237   2016.01.16 23:00

当航班号为A3001时
当航班号为文本框数据时

enpterexpress
enpterexpress   2016.01.16 23:05

sql语句条件写出来

KKLiuZ
KKLiuZ   2016.01.17 11:02

直接把t里面的值打印出来就晓得是什么问题了。

Royal_lr
Royal_lr   Ds   Rxr 2016.01.17 20:29

按条件查询,,肯定要将条件传到后台去

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!