2016-11-07 6 views
1

こんにちは私は簡単な言葉で、私はあなたが手作業でクエリを作ることができる、私はテキストボックスの例 "select * from table"を置くようにする必要があります結果、2番目の問題は、プログラムを削除、更新、または挿入すると、結果を表示するために選択されたセンテンスを自動的に実行する必要がある場合です。テキストフィールドからクエリを動的にあなただけ行うこれをしたいのであればjtableでQuerysを表示

String query = "Select * from TableName"; 
Statement statement = connection.createStatement(); 
ResultSet rs = statement.executeQuery(query); 

public class InfoCd extends JFrame { 

    private JPanel contentPane; 
    private JTable table; 
    private JTextField textQuery; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        InfoCd frame = new InfoCd(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
Connection conn=null; 

    /** 
    * Create the frame. 
    */ 
    public InfoCd() { 

     conn=sqliteConnection.dbConnector(); 

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 753, 477); 
     contentPane = new JPanel(); 
     contentPane.setBackground(SystemColor.activeCaption); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     JButton btnHacerConsulta = new JButton("Hacer Consulta"); 
     btnHacerConsulta.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       try { 
        String query="'?'"; 
        PreparedStatement pst=conn.prepareStatement(query); 
        pst.setString(1, textQuery.getText()); 
        ResultSet rs=pst.executeQuery(); 
        table.setModel(DbUtils.resultSetToTableModel(rs)); 
       } catch (Exception e2) { 
        e2.printStackTrace(); 
       } 

      } 
     }); 
     btnHacerConsulta.setBounds(112, 388, 169, 39); 
     contentPane.add(btnHacerConsulta); 

     JScrollPane scrollPane = new JScrollPane(); 
     scrollPane.setBounds(0, 0, 737, 367); 
     contentPane.add(scrollPane); 

     table = new JTable(); 
     scrollPane.setViewportView(table); 

     textQuery = new JTextField(); 
     textQuery.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 11)); 
     textQuery.setHorizontalAlignment(SwingConstants.CENTER); 
     textQuery.setText("Escribir Consulta Aqui"); 
     textQuery.setToolTipText(""); 
     textQuery.setBounds(422, 388, 270, 39); 
     contentPane.add(textQuery); 
     textQuery.setColumns(10); 
    } 
} 
+0

問題点は何ですか? – ravthiru

+0

私がテキストボックスにquerryを置いてクリックしてプログラムのクラッシュを受け入れるとこれがうまくいきません。 'String query =" '?' "; PreparedStatement pst = conn.prepareStatement(query); pst.setString(1、textQuery.getText()); ResultSet rs = pst.executeQuery(); table.setModel(DbUtils.resultSetToTableModel(rs)); } ' – Nycoh

+0

'をクリックし、プログラムのクラッシュを受け入れるをクリックすると、何も表示されません。私はあなたに何らかのメッセージを伝えると思います。どのように "?"何かするだろうか?これは、SQL文の使用方法ではありません。実際には、ユーザーが文全体を入力することを期待する場合は、PreparedStatementを使用すべきではありません。文章を正しく書式設定するのはユーザーの責任ですが、それは非常に良いデザインではありません。基本的には、変数 "query"にテキストフィールドのテキストを割り当てる必要があります。 – camickr

答えて

0

通常、SQLは次のようになり

String query = textField.getText(); 
Statement statement = connection.createStatement(); 
ResultSet rs = statement.executeQuery(query); 

だから、それテキストフィールドに適切なSQLクエリを入力するのは、ユーザーの責任です。

詳細はSQL Basicsのチュートリアルをご覧ください。

+0

これは私の問題を解決してくれてありがとう – Nycoh

+0

@Nycoh、それは助けてくれてうれしい。他の人が問題が解決されたことを知るために、チェックマークをクリックして回答を「受け入れる」ことを忘れないでください。 – camickr

関連する問題