如何使用groovy脚本在SOAPUI中使用java方法返回的ResultSet?

如何使用groovy脚本在SOAPUI中使用java方法返回的ResultSet?,java,jdbc,groovy,soapui,Java,Jdbc,Groovy,Soapui,我们已经为java方法创建了jar文件,并将其导入到SOAPUI中。我们可以调用方法,但无法检索groovy脚本def dataRow=GetData.GetRecordsRequesty中java方法在ResultSet中返回的查询结果。我不熟悉groovy脚本。 下面是我们用java编写并为其创建jar的方法 package getRecords; import java.sql.Connection; import java.sql.DriverManager; import java.

我们已经为java方法创建了jar文件,并将其导入到SOAPUI中。我们可以调用方法,但无法检索groovy脚本def dataRow=GetData.GetRecordsRequesty中java方法在ResultSet中返回的查询结果。我不熟悉groovy脚本。 下面是我们用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");
    }
}

在SoapUi中,您可以使用Groovy脚本直接执行JDBC调用

如果您想在soapUI中执行一些数据库操作,您可以使用相应的数据库驱动程序DB2、Oracle、Mysql在groovy中编写代码,直到或除非您提到使用jar文件的任何特定原因

建立数据库连接时,需要下载jar文件并将其放置在SoapUi安装文件夹/bin/ext中


例如。。对于Oracle ojdbc6.jar、orai18n.jar,当您从GetRecords返回时,我怀疑您的结果集正在关闭提示:对Java方法名称使用camel大小写,以小写字符开头,并且您可能正在跳转JVM。另见

您可能不需要在soapUI中将结果集用作结果集,您只需要数据,因此更好的选择是填充一个bean并返回这些bean的列表:

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;
}

您可能还需要研究Java 7附带的功能:它将自动处理连接的关闭。

谢谢您的评论。是的,这是可以做到的。。但在这里,我们创建了jar文件,以便在不同的自动化测试脚本中重用相同的方法,这样代码就不会重复。