Привет! Я пытаюсь запустить этот код на Groovy, чтобы, если я выполняю поиск между ни одним или всеми параметрами, он возвращал результат. У него изначально была функция в качестве массива, и она работала, но из-за обновления появилась ошибка о том, что произошло исключение.
Reason:
java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
at java_util_List$get$0.call(Unknown Source)
at TST_PT0108_APL_CRT_CHN.run(TST_PT0108_APL_CRT_CHN:9)
Так что мне пришлось сменить карту. Но, похоже, у меня тоже есть другая проблема. Столько, сколько я пытался преобразовать, или использовать в качестве карты, он либо не распознает функции (map.add (), ...), ни изменяет код (для (Map.Entry entry: map.entrySet ()) )) все подвело меня. Вот код:
package database
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.ResultSetMetaData
import java.sql.SQLException
import java.sql.Statement
import java.sql.SQLClientInfoException
import com.kms.katalon.core.annotation.Keyword
public class DatabaseConnection {
@Keyword
def Map<String, String> sqlSearch (String id, String driver, String dbURL, String dbUser, String dbPass, String sqlSearchPar) {
//def ArrayList<String> sqlSearch (String id, String driver, String dbURL, String dbUser, String dbPass, String sqlSearchPar) {
ArrayList<String> resultList = new ArrayList<String>();
try {
// Abrir conexao a base de dados
Class.forName(driver);
Connection con = DriverManager.getConnection(dbURL,
dbUser, dbPass);
Statement statement = con.createStatement();
String sqlSearch = sqlSearchPar + id;
ResultSet rs = statement.executeQuery(sqlSearch);
// saber o numero de linhas
int rowsNumber = 0;
while (rs.next()) {
rowsNumber++;
}
// se o resultado da pesquisa tiver conteudo...
if (rowsNumber > 0) {
// fazer pesquisa sql
rs = statement.executeQuery(sqlSearch);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
rs.next();
for (int j = 0; j < columnsNumber; j++) {
resultList.add(rs.getString(j + 1));
}
}
con.close();
def resultMap = resultList.toSpreadMap()
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
return resultList;
}
}
Когда я пытаюсь преобразовать карту в String или установить значение на карте, она не распознает его. Появляется:
Reason:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[]' with class 'java.util.ArrayList' to class 'java.util.Map' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.util.Map()
at database.DatabaseConnection.sqlSearch(DatabaseConnection.groovy:66)
at database.DatabaseConnection.invokeMethod(DatabaseConnection.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:50)
at TST_PT0108_APL_CRT_CHN.run(TST_PT0108_APL_CRT_CHN:6)
Я думаю я что-то упускаю из-за c (у меня действительно есть java опыт), но я не могу понять, что я делаю неправильно. вы можете помочь? Заранее спасибо.