0
MySQL Workbenchを使用して同じクエリを使用すると、正しく動作しているように見え、すべての行(2)が返されます。しかし、私がgroovyを使ってそれをするとき、それは私に第1列だけを与えます。わからないここで間違っています。ここでrs.nextを使用すると最初の行だけが返される
は私のコードです:
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
}
}
}
(ドキュメントhereから)。 –
私は完全なコードを貼り付けました。 – protea
さて、あなたはループ内から値を返します。だからそれは続かない。 'return'は現在のメソッドから即座に存在します。結果をいくつかのデータ構造体(リスト)に格納し、リストを返す必要があります。 –