目标:
利用Swing制作查询界面,在界面中输入客户公司名字的全部或一部分,利用模糊查询的方式,将与查询条件相匹配的客户的所有订单情况进行查询,并输出在界面的JTable中。
输出内容必须包括的项目为:客户公司名称、订单号、订货日期、产品名称、订单数量。
输出结果中,客户公司名称相同的需要排列在一起;同一客户,订单号相同的排列在一起;同一客户,订货日期更近的排在上面,例如,我们输入"tom"作为查询条件,就可能查询出公司名称中包含"tom"的客户之部分数据
我现在可以实现出来,在GUI界面中查看全部内容和安条件查看,但"模糊查询的方式"我还没实现,请教高手们,这个问题,要怎么实现呢?
程序为:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.*;
import java.sql.*;
public class dingdan extends JFrame implements ActionListener{
Container p = this.getContentPane();
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JTextField tf = new JTextField(10);
JButton b = new JButton("准确查询");
DefaultTableModel dtm = new DefaultTableModel();
JTable jta = new JTable(dtm);
JScrollPane sp = new JScrollPane(jta);
Connection con;
Statement sta;
ResultSet rst;
ResultSetMetaData rsmd;
String tp;
String[] header;
String[][] content;
int count;
int colNum;
dingdan(){
p.setLayout(new BorderLayout());
p.add(p1,BorderLayout.NORTH);
p1.add(tf);
p1.add(b);
p.add(p2,BorderLayout.CENTER);
p2.add(sp);
cheng();
b.addActionListener(this);
this.setTitle("订单查询系统");
this.setResizable(false);
this.setLocation(300,300);
this.pack();
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setVisible(true);
}
public boolean cheng(){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:mydb");
sta = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
return true;
}
catch (Exception e) {
e.printStackTrace();
}
return false;
}
public void actionPerformed(ActionEvent arg0) {
tp=tf.getText();
if(arg0.getSource()==b){
try {
rst = sta.executeQuery("select * from Orders where OrderID ='" +tp+"'");
rsmd = rst.getMetaData();
colNum = rsmd.getColumnCount();
header = new String[colNum];
for (int i = 0;i<colNum;i++){
header[i] = rsmd.getColumnName(i+1);
}
while(rst.next()){
count++;
}
rst.first();
content = new String[count][colNum];
for(int i = 0; i<count;i++){
for(int j = 0;j<colNum;j++){
content[i][j] = rst.getString(j+1);
//rst.first();
}
rst.next();
}
dtm = new DefaultTableModel(content,header);
jta.setModel(dtm);
rst.first();
System.out.println("EEE");
} catch (SQLException e1) {
e1.printStackTrace();
System.out.println("WWW");
}
}
}
public static void main(String[] args) {
new dingdan();
}
}