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

时间:2018-09-03 06:37:16

标签: java jdbc groovy soapui

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

2 个答案:

答案 0 :(得分:1)

我怀疑当您从GetRecords返回时,您的结果集已关闭(提示:Java方法名称使用驼峰大小写,以小写字母开头),并且您可能还会跳过JVM。另请参见Is it Ok to Pass ResultSet?

您可能不需要在soapUI中将结果集作为结果集使用,您只需要数据,因此更好的选择是填充一个bean并返回一个{{ 1}}来代替:

List

您可能还想研究Java 7附带的try-with-resources功能:它将自动处理连接的关闭。

答案 1 :(得分:0)

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

如果您想在soapUI中进行一些数据库操作,则可以使用相应的数据库驱动程序(DB2,Oracle,Mysql)以Groovy的方式编写代码,直到或除非您提到了使用jar文件的任何特定原因为止。

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

例如..对于Oracle(ojdbc6.jar,orai18n.jar)