当我使用 rs.next 时只返回第一行

Returning only first row when I use rs.next

当我使用 MySQL Workbench 使用相同的查询时,它似乎工作正常并且 returns 所有行(即 2)。但是当我使用 groovy 时,它只给我第一行。不确定我在这里做错了什么。

这是我的代码:

context.setProperty("Database", new Database());

import groovy.sql.Sql
import java.sql.*
import com.jcraft.jsch.JSch
import com.jcraft.jsch.Session


class Database{
    def queryDatabase(sqlQuery, table)
    {
        // ssh login
       String sshHost = 'test'
       String sshUser = 'test'
       String sshPass = 'test'
       int sshPort = 22


       // database login
       String targetHost = 'localhost'
        String targetUser = 'test'
        String targetPass = 'test'
        int targetPort = 3306
        int lport = 4322



        JSch jsch = new JSch();
        Session session = jsch.getSession(sshUser, sshHost, sshPort);
        session.setPassword(sshPass);
        session.setConfig("StrictHostKeyChecking", "no");
        System.out.println("Establishing Connection...");
        try {
        session.connect();
        int assinged_port=session.setPortForwardingL(lport, targetHost, targetPort);

        Connection con = null;
        String driver = "org.mariadb.jdbc.Driver";
        String connectionString = "jdbc:mariadb://" + targetHost +":" + lport + "/";
        con = DriverManager.getConnection(connectionString, targetUser, targetPass);
        Statement st = con.createStatement();
        java.sql.ResultSet rs = st.executeQuery(sqlQuery);
        while (rs.next()) {
            String value = rs.getString(table);
            return (value)
            }
       }finally{
        session.disconnect()
        null
    }
    }
}

此代码似乎与您的 Java 版本不同

    while (rs.next()) {
        String value = rs.getString(table)
        return (value)
    }

此代码立即 returns 值,而不是将其存储在临时变量中并返回整个列表,因此您可以这样写:

    def result = []

    while (rs.next()) {
        result << rs.getString(table)
    }

    return result

但是,如果您要将此代码重写为 Groovy,为什么不改用 groovy.sql.Sql

这样你就可以做如下事情:

List authors = sql.rows('SELECT firstname, lastname FROM Author')

(来自文档 here