首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

看下这段代码错在那里了?该怎么解决

2012-01-19 
看下这段代码错在那里了?packageluckyimportjavax.swing.*importjava.awt.*importjava.awt.event.*imp

看下这段代码错在那里了?
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( " ' ", " ' ' ")+ " ' ";

热点排行