2016-11-07 4 views
1

Привет, я делаю проект для моего класса java, простыми словами, я должен сделать программу, которая позволяет вам делать запрос вручную, например, я нахожу пример текстового поля «select * from table», и он показывает результаты, вторая проблема будет заключаться в том, что если удаление, обновление или вставка программы должны автоматически выполнить выбранное предложение, чтобы показать результаты.Показывать запросы в jtable

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, состоящий из «?», что-нибудь сделает? Это не так, как используется оператор SQL. Фактически, если вы ожидаете, что пользователь наберет весь оператор, тогда вы даже не должны использовать PreparedStatement. Пользователь должен правильно отформатировать инструкцию, которая, кстати, не очень хорошая конструкция. В основном переменной «запрос» нужно присвоить текст из текстового поля. – camickr

ответ

0

Обычно SQL будет выглядеть примерно так:

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

Итак, если вы хотите сделать это динамически с помощью запроса из текстового поля вы просто сделать:

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

Так зависит от пользователя, чтобы ввести правильный SQL-запрос в текстовое поле.

Для получения дополнительной информации ознакомьтесь с руководством по SQL Basics.

+0

Спасибо, что решил мою проблему – Nycoh

+0

@Nycoh, рад, что это помогло. Не забудьте «принять» ответ, нажав на галочку, чтобы другие знали, что проблема решена. – camickr

 Смежные вопросы

  • Нет связанных вопросов^_^