у меня есть тестовые сценарии, productId хранится в текстовом файле, который я могу использовать для чтения, используя метод read.
import static org.assertj.core.api.Assertions.*
import groovy.json.JsonOutput as JsonOutput
import groovy.json.JsonSlurper as JsonSlurper
import internal.GlobalVariable as GlobalVariable
import internal.GlobalVariable
import com.kms.katalon.core.configuration.RunConfiguration
import java.sql.*
import java.io.File
//Read productId
def productId = new File(RunConfiguration.getProjectDir() + "/Data Files/productId.txt")
//SQL statement
String dbQuery2 = /SELECT * FROM db.table1 where productId= @productId order by lastmodificationdateutc desc/
как использовать @ в качестве переменной и заменить его на "productId .text "?
я пробовал ниже коды, но это не работает, пожалуйста, исправьте меня, если этот метод можно использовать?
String dbQuery2 = "SELECT * FROM db.table1 where productId = ?"
def productId = new File(RunConfiguration.getProjectDir() + "/Data Files/productId.txt")
PreparedStatement stmt = con.prepareStatement(dbQuery2)
stmt.setString(1, productId.text)
ResultSet resultSet = preparedStatement.executeQuery()
ResultSet resultSet = stmt.executeQuery()
//Connect to PostgresSQL, global variable is stored at profile
List resultSet = CustomKeywords.'test.database.getPostgresSQLResults'(GlobalVariable.dbConnString2 , GlobalVariable.dbUsername2 , GlobalVariable.dbPassword2 ,GlobalVariable.dbDriver2 ,dbQuery2 )
ниже приведены коды, которые работают без подготовленного заявления
строка подключения в скрипте
//to connect PostgresSQL server
@Keyword
def List getPostgresSQLResults (String dbConnString2 , String dbUsername2 , String dbPassword2 , String dbDriver2 , String dbQuery2){
Sql sql = Sql.newInstance(dbConnString2,dbUsername2,dbPassword2,dbDriver2)
List results = sql.rows(dbQuery2)
return results
sql.close()
}