看下这段代码错在那里了?
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)查询的时候,只有关键字是数字的时候才能查找到,这是为什么? 其他查询都不起作用 这是为什么?
该怎么解决,谢谢
------解决方案--------------------
strSql = "select * from student where " + conlon + "= " + search+ " ";
改成
strSql = "select * from student where " + conlon + "= ' "
+ search.replaceAll( " ' ", " ' ' ")+ " ' ";