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()时,就一片空白,什么都显示不了