在 Katalon Studio 中连接到 Oracle SQL

Posted

技术标签:

【中文标题】在 Katalon Studio 中连接到 Oracle SQL【英文标题】:Connect to Oracle SQL in Katalon Studio 【发布时间】:2018-03-12 14:33:28 【问题描述】:

我尝试使用下面的 Groovy 脚本连接到 Oracle SQL 数据库:

def connectDB(String dataFile)
    //Load driver class for your specific database type
    Class.forName("oracle.jdbc.driver.OracleDriver")
    String connectionString = "jdbc:sqlite:" + dataFile
    if(connection != null && !connection.isClosed())
        connection.close()
    
    connection = DriverManager.getConnection(connectionString)
    return connection

连接字符串中有 sqlite,但不确定我应该在那里使用哪个值。 (我也试过jdbc:oracle。)

我使用以下类建立数据库连接。

public class sqlconnect 
    private static Connection connection = null;

    /**
     * Open and return a connection to database
     * @param dataFile absolute file path 
     * @return an instance of java.sql.Connection
     */
    @Keyword
    def connectDB(String dataFile)
        //Load driver class for your specific database type
        Class.forName("oracle.jdbc.driver.OracleDriver")
        String connectionString = "jdbc:sqlite:" + dataFile
        if(connection != null && !connection.isClosed())
            connection.close()
        
        connection = DriverManager.getConnection(connectionString)
        return connection
    

    /**
     * execute a SQL query on database
     * @param queryString SQL query string
     * @return a reference to returned data collection, an instance of java.sql.ResultSet
     */
    @Keyword
    def executeQuery(String queryString) 
        Statement stm = connection.createStatement()
        ResultSet rs = stm.executeQuery(queryString)               
        return rs
    

    @Keyword
    def closeDatabaseConnection() 
        if(connection != null && !connection.isClosed())
            connection.close()
        
        connection = null
    

    /**
     * Execute non-query (usually INSERT/UPDATE/DELETE/COUNT/SUM...) on database   
     * @param queryString a SQL statement
     * @return single value result of SQL statement
     */
    @Keyword
    def execute(String queryString) 
        Statement stm = connection.createStatement()
        boolean result = stm.execute(queryString)
        return result
    

我已经在 Katalon Studio 的Project > Settings > Database 下设置了数据库信息。 我使用 CustomKeyword connectDB()executeQuery() 方法从测试用例中调用。

更新:

我更新了connectDB()方法Groovy脚本:

def connectDB()
    Class.forName("oracle.jdbc.driver.OracleDriver")
    //String connectionString = "jdbc:oracle:thin:username/password@ipaddress:port/servicename"
    if(connection != null && !connection.isClosed())
        connection.close()
    
    connection = DriverManager.getConnection("jdbc:oracle:thin:username/password@ipaddress:port/servicename", "username", "password")
    return connection

我尝试使用变量connectionString 作为DriverManager.getConnection() 方法的参数,但在两种情况下我都收到相同的错误消息。

无法使用类强制转换对象“oracle.jdbc.driver.T4CConnection@” 'oracle.jdbc.driver.T4CConnection' 到类 'com.mysql.jdbc.Connection'

【问题讨论】:

连接字符串的格式为jdbc:oracle:<drivertype>:@<database>(例如jdbc:oracle:thin:@host:1521:xe)。 Learn more about connection strings... @JuanMellado :我修复了这个字符串。我在 GUI 上收到 Connection succcesful! 消息,但在调用 connectDB() 方法时收到 java.sql.SQLException: ORA-01017: invalid username/password; logon denied 错误消息。 您可以在调用时传递用户名和密码:DriverManager.getConnection ("<connection string>", "<user>", "<password>");,或在连接字符串中传递:jdbc:oracle:<drivertype>:<user>/<password>@<database> 最新编辑中的问题只是意味着您导入了com.mysql.jdbc.Connection(这是一个MySQL类)而不是JDBC接口java.sql.Connection。修复你的导入。 @MarkRotteveel:谢谢,这个问题已经解决了。 【参考方案1】:

连接字符串的格式是jdbc:oracle:<drivertype>:@<database>(例如jdbc:oracle:thin:@host:1521:xe)。

您可以在调用时传递用户名和密码:DriverManager.getConnection("<connection string>", "<user>", "<password>");,甚至可以在连接字符串中传递:jdbc:oracle:<drivertype>:<user>/<password>@<database>(例如jdbc:oracle:thin:scott/tiger@host:1521:xe)。

你应该学习more about connection strings.

【讨论】:

我更新了连接字符串,但是得到了错误信息:Cannot cast object 'oracle.jdbc.driver.T4CConnection@' with class 'oracle.jdbc.driver.T4CConnection' to class 'com.mysql.jdbc.Connection'我使用端口号和服务名来连接数据库。 你试过用用户名和密码作为参数调用DriverManager.getConnection吗? 我的connectionString 命名变量也已经包含用户名和密码。我使用了connection = DriverManager.getConnection("<connection string>", "<user>", "<password>"); 格式,但得到了同样的错误信息。 请使用您当前使用的代码更新您的问题。您之前获得了成功的连接,只有用户名/密码错误。但是现在你报错了“com.mysql.jdbc.Connection”(mysql?)。 我用修改后的 connectDB() 方法更新了它。我在执行期间从测试用例中调用它。

以上是关于在 Katalon Studio 中连接到 Oracle SQL的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Visual Studio 2019 C# 中连接到 Oracle 数据库

如何以 SYS 身份在 Java 中连接到 Oracle?

katalon系列十一:Katalon Studio在Jenkins持续集成

Katalon Studio下载历史版本地址

Katalon Studio基本用法

Katalon Studio 安装 配置 简单使用