2017-01-26 9 views
-1

Я пытаюсь создать программу, в которой я могу ввести любой оператор sql в текстовое поле, а затем выполнит его. Если это не запрос, то просто покажите на ярлыке затронутые строки или если это запрос, тогда покажите результаты. Я знаю, как заполнить jtable с помощью набора результатов. Но я немного застрял в запросе против части, не связанной с запросом.Java, TextArea, используемый для создания оператора SQL

+0

ли вы имеете в виду что-то вроде, если это '' insert' или delete' команда по сравнению с «выбрать»? – MadProgrammer

+0

Используйте метод 'execute' интерфейса' Statement'. Его возвращаемое значение сообщает вам, есть ли 'ResultSet' для получения. –

+0

im пытается построить мини-окно разработчика plsql в качестве проекта, поэтому поэтому любое предложение sql может быть введено в –

ответ

0

Вы можете пойти с СТГ, как:

package default; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.Vector; 

    public class DBConnector { 



     private static Connection getConnection() throws SQLException 
     { 
      String url  = "your-url"; 
      String user  = "user"; 
      String password = "password"; 

      Connection conn = DriverManager.getConnection(url, user, password); 

      return conn; 
     } 

     public Vector<Vector<String>> ExecuteQuery(String query) 
     { 
      Statement stmt = null; 
      ResultSet rs = null; 
      //Vector of vectors for JTable 
      Vector<Vector<String>> data = new Vector<Vector<String>>(); 
      try { 
       //Create new statement 
       stmt = getConnection().createStatement(); 
       //Execute given `query` 
       rs = stmt.executeQuery(query); 


       if (stmt.execute(query)) { 
        rs = stmt.getResultSet(); 
       } 

       //while there are some rows 
       while(rs.next()) 
       { 
        //Create new Vector 
        Vector<String> temp = new Vector<String>(); 
        int numColumns = rs.getMetaData().getColumnCount(); 
        //Put data into that vector 
        for (int i = 1 ; i <= numColumns ; i++) { 
         temp.addElement(rs.getString(i)); 
        } 

        //Add vector to `data` 
        data.add(temp); 
       } 

      } 
      catch (SQLException ex){ 
       // handle any errors 
       System.out.println("SQLException: " + ex.getMessage()); 
       System.out.println("SQLState: " + ex.getSQLState()); 
       System.out.println("VendorError: " + ex.getErrorCode()); 
      } 
      finally { 
       if (rs != null) { 
        try { 
         rs.close(); 
        } catch (SQLException sqlEx) { } 

        rs = null; 
       } 

       if (stmt != null) { 
        try { 
         stmt.close(); 
        } catch (SQLException sqlEx) { } // ignore 

        stmt = null; 
       } 
      } 
      //Return 
      return data; 
     } 
    } 

Сначала вы должны заполнить getConnection() поля и то и может создать JTable от вызова ExecuteQuery прохождения TextArea.getText() строки, потому что вы получите вектор векторов перейти к JTable.

Надеюсь, что я помог :)