0

jlist にデータをロードするクエリを作成しています

public void showtitle(){
  DefaultListModel model = new DefaultListModel();
  booklist.setModel(model);
  try{
    Class.forName("org.apache.derby.jdbc.ClientDriver");    
    Connection conn = DriverManager.getConnection("jdbc:derby://"+X, "APP", "app");
    Statement stmt = conn.createStatement();
    String query="SELECT TITLE FROM BOOK WHERE ISBN LIKE '%"
      + code.getText().toUpperCase()+"%' OR "
      + " TITLE LIKE '%"+name.getText().toUpperCase()+"%' ";
    ResultSet rs = stmt.executeQuery(query);
    while(rs.next()){
      String isbn = rs.getString(1);
      model.addElement(isbn);
   }
  }
  catch ( ClassNotFoundException | SQLException ex) {
    JOptionPane.showMessageDialog(null, "Unknown Error!! Data cannot be displayed!" + ex);
  }
}  

私はこのメソッドを次のように呼び出しています:

private void codeKeyReleased(java.awt.event.KeyEvent evt)
{                                 
  showtitle();
}  

1000 個のデータを挿入した後、クエリの実行が非常に遅くなります。私の手順は良くありませんか?致命的なミスはありませんか?私は何をすべきか?

4

2 に答える 2

1

メソッドでクエリを実行するだけではありません。

また、JDBC 接続も作成していますが、これはおそらくはるかに高価な操作です。

JDBC接続を一度作成して、アプリケーションのどこかに保存してみてください。

次に、ユーザーがキー リリース イベントを実行したら、クエリを実行して結果を取得します。

于 2013-04-29T19:01:39.377 に答える