查询时,text为空的时候,table有数据,text有数据的时候,table没数据。什么原因?给个好答案吧。下面是代码。----------------------------------------  test.java--------------------
import java.sql.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;public class test extends JFrame { private JPanel jContentPane = null;
private JLabel jLabel = null;
private JTextField jTextFieldBook = null;
private JLabel jLabel1 = null;
private JTextField jTextFieldAuthor = null;
private JLabel jLabel2 = null;
private JTextField jTextFieldPree = null;
private JButton jButton = null;
private JScrollPane jScrollPane = null;
private JTable jTable = null;
private ConnDB conn = new ConnDB();
DefaultTableModel model = new DefaultTableModel();
Vector tempvector = new Vector();

/**
 * This method initializes jTextField
 * 
 * @return javax.swing.JTextField
 */
private JTextField getJTextFieldBook() {
if (jTextFieldBook == null) {
jTextFieldBook = new JTextField();
jTextFieldBook.setBounds(new java.awt.Rectangle(56,15,115,33));
}
return jTextFieldBook;
} /**
 * This method initializes jTextField1
 * 
 * @return javax.swing.JTextField
 */
private JTextField getJTextField1() {
if (jTextFieldAuthor == null) {
jTextFieldAuthor = new JTextField();
jTextFieldAuthor.setBounds(new java.awt.Rectangle(220,15,113,33));
}
return jTextFieldAuthor;
} /**
 * This method initializes jTextField2
 * 
 * @return javax.swing.JTextField
 */
private JTextField getJTextFieldPree() {
if (jTextFieldPree == null) {
jTextFieldPree = new JTextField();
jTextFieldPree.setBounds(new java.awt.Rectangle(397,15,87,33));
}
return jTextFieldPree;
} /**
 * This method initializes jButton
 * 
 * @return javax.swing.JButton
 */
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new java.awt.Rectangle(497,14,60,31));
jButton.setText("查询");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
getJTable();
}
});
}
return jButton;
} /**
 * This method initializes jScrollPane
 * 
 * @return javax.swing.JScrollPane
 */
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(0,56,593,314));
jScrollPane.setViewportView(getJTable());
}
return jScrollPane;
} /**
 * This method initializes jTable
 * 
 * @return javax.swing.JTable
 */
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable(model);
}
Collection JTable=new ArrayList();
String sql;
boolean isFirst=true;
sql="SELECT * FROM books ";
if(!jTextFieldBook.getText().equals("")){
sql=sql+"WHERE Bookname='"+jTextFieldBook.getText().trim()+"'";
isFirst=false;
}
if(!jTextFieldAuthor.getText().equals("")){
if(isFirst){
sql=sql+"WHERE Author='"+jTextFieldAuthor.getText().trim()+"'";
isFirst=false;
}
else{
sql=sql+"AND Author='"+jTextFieldAuthor.getText().trim()+"'";
}
}
if(!jTextFieldPree.getText().equals("")){
if(isFirst){
sql=sql+"WHERE Press='"+jTextFieldPree.getText().trim()+"'";
isFirst=false;
}
else{
sql=sql+"AND Press='"+jTextFieldPree.getText().trim()+"'";
}
}
System.out.println("图书查询时的SQL:"+sql);
ResultSet rs=conn.executeQuery(sql);
for (int n = model.getRowCount() - 1; n >= 0; n--)
model.removeRow(n);
try{

while (rs.next()){
tempvector = new Vector();
              tempvector.add(rs.getString("Bookname"));
              tempvector.add(rs.getString("Press"));
              tempvector.add(rs.getString("Author"));
              tempvector.add(rs.getString("Address"));
              tempvector.add(rs.getString("Pressdate"));
              tempvector.add(rs.getString("Price"));
              tempvector.add(rs.getString("Comment"));
              model.addRow(tempvector);
}
}catch (SQLException ex){

}



return jTable;
} /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
test application = new test();
application.show();
} /**
 * This is the default constructor
 */
public test() {
super();
initialize();
} /**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(600, 400);
this.setContentPane(getJContentPane());
this.setTitle("查询TEST");
model.addColumn("书名");
       model.addColumn("出版社");
       model.addColumn("作者");
       model.addColumn("地址");
       model.addColumn("出版日期");
       model.addColumn("定价");
       model.addColumn("评论");
} /**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel2 = new JLabel();
jLabel2.setBounds(new java.awt.Rectangle(340,14,55,32));
jLabel2.setText("出版社");
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(176,14,40,31));
jLabel1.setText("作者");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(15,14,40,32));
jLabel.setText("书名");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(jLabel, null);
jContentPane.add(getJTextFieldBook(), null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJTextField1(), null);
jContentPane.add(jLabel2, null);
jContentPane.add(getJTextFieldPree(), null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJScrollPane(), null);
}
return jContentPane;
}}

解决方案 »

  1.   

    接着上面的代码
    ----ConnDB.java----
    import java.sql.*;
    public class ConnDB {
        public Connection conn=null;
        public ResultSet rs=null;
        public Statement stmt=null;
        private String Driver= "com.mysql.jdbc.Driver";
        private String url= "jdbc:mysql://localhost:3306/bb?user=root&password=imo007&useUnicode=true";
        
        public ConnDB() {   //构造方法
        }
        public Connection getConnection() {
          try {
              Class.forName(Driver);
              conn = DriverManager.getConnection(url);
          } catch (Exception e) {
              System.out.println(e.getMessage());
          }
          if (conn == null) {
              System.out.println("没有获取到数据库连接");
          }
          return conn;
        }
        /*
     *功能:执行查询语句
     */
    public ResultSet executeQuery(String sql) {
      try {
        conn = getConnection();
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                    ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql);
      }
      catch (SQLException ex) {
        System.err.println(ex.getMessage());
      }
      return rs;
    }/*
     *功能:执行更新操作
     */
    public int executeUpdate(String sql) {
      int result = 0;
      try {
        conn = getConnection();
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                    ResultSet.CONCUR_READ_ONLY);
        result = stmt.executeUpdate(sql);
      }
      catch (SQLException ex) {
        result = 0;
      }
      try {
        stmt.close();
      }
      catch (SQLException ex1) {
      }
      return result;
    }    /*
         *功能:关闭数据库的连接
         */
        public void close() {
          try {
            if (rs != null) {
              rs.close();
            }
          }
          catch (Exception e) {
            e.printStackTrace(System.err);
          }
          try {
            if (stmt != null) {
              stmt.close();
            }
          }
          catch (Exception e) {
            e.printStackTrace(System.err);
          }
          try {
            if (conn != null) {
              conn.close();
            }
          }
          catch (Exception e) {
            e.printStackTrace(System.err);
          }
      }
    }
      

  2.   

    经过不断的测试获取的text是 数字或英文可以得到结果,但是 中文 就不可以,我该怎样改?