как вставить переменную в SQL запрос - PullRequest
0 голосов
/ 16 марта 2020

у меня есть тестовые сценарии, 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()
    }

1 Ответ

0 голосов
/ 16 марта 2020

Мне удалось использовать этот синтаксис в качестве переменной

def productId = new File(RunConfiguration.getProjectDir() + "/Data Files/productId.txt")
dbQuery2 = /SELECT * FROM db.table1 where productId = '$productId.text}'/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...