,以机票查询为例,在eclipse中windowbuilder绘图,返回oracle数据库中满足2022-12-1日飞的机票的Java语言怎么写
时间: 2024-02-25 08:58:38 浏览: 23
以下是一个简单的示例代码,它使用Java Swing和Oracle数据库,演示了如何在窗体中绘制一个简单的表格,并根据数据库中的数据进行筛选和显示:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class FlightTable extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FlightTable frame = new FlightTable();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public FlightTable() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(null);
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
// 查询数据
Vector<Vector<String>> data = new Vector<Vector<String>>();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "username", "password");
String sql = "SELECT * FROM flight WHERE date = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "2022-12-01");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Vector<String> row = new Vector<String>();
row.add(rs.getString("flight_no"));
row.add(rs.getString("departure"));
row.add(rs.getString("destination"));
row.add(rs.getString("date"));
row.add(rs.getString("time"));
row.add(rs.getString("price"));
data.add(row);
}
rs.close();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
// 显示表格
Vector<String> columns = new Vector<String>();
columns.add("Flight No.");
columns.add("Departure");
columns.add("Destination");
columns.add("Date");
columns.add("Time");
columns.add("Price");
table = new JTable(data, columns);
JScrollPane scrollPane = new JScrollPane(table);
contentPane.add(scrollPane, BorderLayout.CENTER);
}
}
```
在这个示例代码中,我们新建了一个`FlightTable`类,它继承自`JFrame`,并包含了一个表格`JTable`。我们使用`PreparedStatement`来防止SQL注入攻击,并设置查询条件为`2022-12-01`。在`SELECT`语句中,我们使用了`*`来查询所有列。如果不需要所有列,可以将`*`替换成需要的列名,例如`SELECT flight_no, departure, destination, date, time, price FROM flight WHERE date = ?`。查询结果保存在一个`Vector<Vector<String>>`中,每个`Vector<String>`表示一行数据。然后,我们根据查询结果创建表格`JTable`,并将其显示在窗体中。
需要注意的是,这个示例代码仅作为参考,实际使用时需要根据具体的需求进行修改。例如,你可能需要根据用户的输入来查询数据库,或者需要使用其他的数据库或绘图库。