Как использовать ResultSet, возвращаемый методом java в SOAPUI с groovy скриптом? - PullRequest
0 голосов
/ 03 сентября 2018

Мы создали файл jar для метода java и импортировали его в SOAPUI . Мы можем вызвать метод, но не можем получить результат запроса, возвращенный в ResultSet методом java в groovy script def dataRow = GetData.GetRecords(preQuery). Я новичок в заводной сценарий. Ниже приведен метод, который мы написали в java и создали для него jar.

package getRecords;

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

public class GetData {

    protected static Connection con = null;
    protected static Statement stmt = null;
    protected static ResultSet result = null;

    //Opening DB connection
    public static void OpenDBConnection(String dbUrl, String driver, String username, String password){

        //Making connection to DB
        try {
            Class.forName(driver);

            con = DriverManager.getConnection(dbUrl, username, password);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    //Closing DB connection
    public static void CloseDBConnection(){
        try {
            //Closing DB connection
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //Executing query and fetching data from DB
    public static ResultSet GetRecords(String query){

        //Executing query and saving result into result set
        try {
            stmt = con.createStatement();

            result = stmt.executeQuery(query);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }

    public static void main(String args[]){
        System.out.println("DBConnection..");

        GetData gd = new GetData();
        GetData.OpenDBConnection("jdbc:oracle:thin:@test:1530/test", "oracle.jdbc.driver.OracleDriver", "******", "******");
        System.out.println("DB");
    }
}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Я подозреваю, что ваш набор результатов закрывается, когда вы возвращаетесь из GetRecords (подсказка: используйте верблюжий регистр для имен методов Java, начиная с символа нижнего регистра), и вы также можете использовать JVM. См. Также Можно ли передавать ResultSet? .

Возможно, вам не нужно использовать ваш набор результатов как набор результатов обратно в soapUI, вам просто нужны данные, поэтому лучшим вариантом будет заполнение компонента и возврат List из них вместо:

public static List<MyBean> GetRecords(String query){

    List<MyBean> myBeans = new ArrayList<>();
    //Executing query and saving result into result set
    try {
        stmt = con.createStatement();

        result = stmt.executeQuery(query);
        while (result.next()) {

            MyBean myBean = new MyBean();
            // Populate the bean...

            myBeans.add(myBean);
        }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return myBeans;
}

Возможно, вы также захотите изучить функцию try-with-resources , которая появилась в Java 7: она будет обрабатывать закрытие ваших соединений автоматически.

0 голосов
/ 03 сентября 2018

В SoapUi вы можете напрямую выполнять вызов JDBC, используя скрипты Groovy.

Если вы хотите выполнить какую-либо операцию с базой данных в soapUI, вы можете написать код в groovy, используя соответствующий драйвер базы данных (DB2, Oracle, Mysql), до или без какой-либо конкретной причины использовать jar-файл, как вы упомянули.

Установив соединение с базой данных, вам нужно скачать и поместить файлы JAR внутри (папка установки SoapUi / bin / ext

например .. для Oracle (ojdbc6.jar, orai18n.jar)

...