package lucky;import javax.swing.*;import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Vector;public class findStu extends JFrame { /**
 * 查询用户
 */
private Connection con;
private ResultSet rs;
private Statement stmt;
private ResultSetMetaData rsMetaData; private Choice check;
private JTextField term;
private JTable table;
private String search;
private String conlon;
private String strSql;
boolean flag = false; findStu() { super("学生查询");
String url = "jdbc:mysql://localhost:3306/lucky";
String name = "root";
String pass = "lala"; try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, name, pass); } catch (ClassNotFoundException e) {
e.getStackTrace();
System.exit(1);
} catch (SQLException e) {
e.getStackTrace();
System.exit(1);
} JPanel findpanel = new JPanel();
findpanel.setLayout(new FlowLayout());
check = new Choice(); check.add("StuNO");
check.add("StuName");
check.add("sex");
check.add("birthred");
check.add("magar");
check.add("dep"); term = new JTextField();
term.setPreferredSize(new Dimension(120, 20)); JButton onebut = new JButton("查询");
onebut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = true;
getTable();
}
}); JButton allbut = new JButton("全部");
allbut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = false;
getTable();
}
}); findpanel.add(check, FlowLayout.LEFT);
findpanel.add(term);
findpanel.add(onebut);
findpanel.add(allbut); table = new JTable(); Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(findpanel, BorderLayout.NORTH);
c.add(table, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void Closing(WindowEvent e) {
closecon();
System.exit(1);
}
});
setResizable(false);
setSize(450, 350);
OnScreen();
show();
} public void getTable() {
if (flag == true) {
try {
search = term.getText();
conlon = check.getSelectedItem();
strSql = "select * from student where " + conlon + "=" + search
+ "";
stmt = con.createStatement();
rs = stmt.executeQuery(strSql);
System.out.println(strSql);
System.out.println(search);
displayResultSet(rs);
} catch (SQLException e) {
e.getStackTrace();
}
} else if (flag == false) {
try {
strSql = "select * from student";
stmt = con.createStatement();
rs = stmt.executeQuery(strSql);
displayResultSet(rs);
} catch (SQLException e) {
e.getStackTrace();
}
}
} private void displayResultSet(ResultSet rs) throws SQLException {
boolean moreRecords = rs.next();
if (!moreRecords) {
JOptionPane.showMessageDialog(this, "结果集中无记录");
return;
}
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
// 获取字段的名称
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
columnHeads.addElement(rsmd.getColumnName(i));
// 获取记录集
do {
rows.addElement(getNextRow(rs, rsmd));
} while (rs.next());
// 在表格中显示查询结果
table = new JTable(rows, columnHeads);
JScrollPane scroller = new JScrollPane(table);
Container c = getContentPane();
c.remove(1);
c.add(scroller, BorderLayout.CENTER);
// 刷新Table
c.validate();
} catch (SQLException sqlex) {
sqlex.printStackTrace();
}
} private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)
throws SQLException {
Vector currentRow = new Vector();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
currentRow.addElement(rs.getString(i));
// 返回一条记录
return currentRow;
} public void closecon() {
try {
con.close();
stmt.close();
rs.close(); } catch (SQLException e) {
e.getStackTrace();
}
} public void OnScreen() {
Dimension meSize = getToolkit().getScreenSize();
Dimension windowSize = getSize();
int x, y;
x = (meSize.width - windowSize.width) / 2;
y = (meSize.height - windowSize.height) / 2;
if (x < 0) {
x = 0;
}
if (y < 0) {
y = 0;
}
setLocation(x, y);
} public static void main(String[] args) { JFrame f = new findStu();
f.show();
}}
为什么我条件查询时候,StuON查询没问题,当根据第二字段(StuName)查询的时候,只有关键字是数字的时候才能查找到,这是为什么?    其他查询都不起作用 这是为什么?
该怎么解决,谢谢