Connect to Oracle SQL database

I tried to use Groovy script from tutorial to connect to Oracle SQL database:

_ 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_

_ }_

There is sqlite in connection string, but not sure which value should I use there. (I tried jdbc:oracle too.)

Hi i would like to know as well. I tried:

  1. String conn = “jdbc:oracle:thin:@” + host + “:” + port + “/” + dbname

  2. String conn = “jdbc:oracle:thin:@” + host + “:” + port + “:” + dbname

Both is giving me error: Cannot cast object ‘oracle.jdbc.driver.T4CConnection@45312be2’ with class ‘oracle.jdbc.driver.T4CConnection’ to class ‘com.mysql.jdbc.Connection’

Hafiz said:

with class ‘oracle.jdbc.driver.T4CConnection’ to class ‘com.mysql.jdbc.Connection’

you need to import correct connection class not one used from MySQL

plaidshirtakos said:

I tried to use Groovy script from tutorial to connect to Oracle SQL database:

_ 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_

_ }_

There is sqlite in connection string, but not sure which value should I use there. (I tried jdbc:oracle too.)

this is reading for you:
https://www.dba-resources.com/oracle/jdbc-connection-strings-for-oracle-thin-driver/
https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html

Andrej Podhajský said:

Hafiz said:

with class ‘oracle.jdbc.driver.T4CConnection’ to class ‘com.mysql.jdbc.Connection’

you need to import correct connection class not one used from MySQL

Hi Andrej

I have this declared:

import oracle.jdbc.driver.OracleDriver

Im getting same error

This is how i did it:

1. Create Custom keyword with this imports:

import com.kms.katalon.core.annotation.Keyword

import groovy.sql.Sql

public class executeSQL {

@Keyword

def execSQL(String host, String port, String sid, String username, String password){

String connectionString

connectionString = “jdbc:oracle:thin:@” + host + “:” + port + “:” + sid

def sql = Sql.newInstance(connectionString, username, password)

try {

        sql.eachRow('select sysdate from dual'){ row ->

         println row

   }

} finally {

sql.close()

}

}

}

2: how to call:

CustomKeywords.‘executeSQL.execSQL’(“YOUR_IP”,
“YOUR_PORT”, “YOUR_SID”, “YOUR_USERNAME”,
“YOUR_PASSWORD” )

4 Likes

crokatalontest said:

This is how i did it:

1. Create Custom keyword with this imports:

import com.kms.katalon.core.annotation.Keyword

import groovy.sql.Sql

public class executeSQL {

@Keyword

def execSQL(String host, String port, String sid, String username, String password){

String connectionString

connectionString = “jdbc:oracle:thin:@” + host + “:” + port + “:” + sid

def sql = Sql.newInstance(connectionString, username, password)

try {

        sql.eachRow('select sysdate from dual'){ row ->

         println row

   }

} finally {

sql.close()

}

}

}

2: how to call:

CustomKeywords.‘executeSQL.execSQL’(“YOUR_IP”,
“YOUR_PORT”, “YOUR_SID”, “YOUR_USERNAME”,
“YOUR_PASSWORD” )

Thank you. this works

helolo @hafiz
please mark @crokatalontest response as best

Hi, how you you write the code for SQLServer?

crokatalontest said:

This is how i did it:

1. Create Custom keyword with this imports:

import com.kms.katalon.core.annotation.Keyword

import groovy.sql.Sql

public class executeSQL {

@Keyword

def execSQL(String host, String port, String sid, String username, String password){

String connectionString

connectionString = “jdbc:oracle:thin:@” + host + “:” + port + “:” + sid

def sql = Sql.newInstance(connectionString, username, password)

try {

        sql.eachRow('select sysdate from dual'){ row ->

         println row

   }

} finally {

sql.close()

}

}

}

2: how to call:

CustomKeywords.‘executeSQL.execSQL’(“YOUR_IP”,
“YOUR_PORT”, “YOUR_SID”, “YOUR_USERNAME”,
“YOUR_PASSWORD” )


What is the purpose of this:

{ row ->

This block of code causes errors.

1 Like

I had this error:
Cannot cast object ‘oracle.jdbc.driver.OracleStatementWrapper@53ed09e8’ with class ‘oracle.jdbc.driver.OracleStatementWrapper’ to class ‘com.mysql.jdbc.Statement’

And this tip solved the problem. Thanks a lot.

Hi,
I am currently working my way into Katalon Free and trying to connect to the Oracle database to then execute an SQL command.
I have created a custom keyword and filled it with the following content. (I’ve sort of adopted the solution here, which probably doesn’t work for me.)

import groovy.sql.Sql

public class resetauthflag {

  @Keyword
  def execSQL(String host, String port, String sid, String username, String password){

  String connectionString

  connectionString = 'jdbc:oracle:thin:@' + host + ':' + port + ':' + sid

  def sql = Sql.newInstance(connectionString, username, password)
  
    {

sql.eachRow('delete from XXXXXX  ka where ka.kunde_id in (select id from kunde k where k.nummer = 123456'){ row ->

        println row

    }
}  

{
sql.close()
}
}
}
  • In my test file I have added the keyword
CustomKeywords.'database.resetauthflag.execSQL'('host', 'port', 'sid', 'user', 'password')

when i run the whole thing i get the following error

Caused by: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: groovy.sql.Sql(java.lang.String, java.lang.String, java.lang.String, database.resetauthflag$_execSQL_closure1, database.resetauthflag$_execSQL_closure2)

What am I doing wrong? I am grateful for any support.

How about try:
def sql = Sql.newInstance(connectionString, "${username}", "${password}")

Groovy - Closures (tutorialspoint.com)

It worked for me too, many thanks :slight_smile:

Hi there, :wave:

Thank you very much for your topic! It may take a little while before Katalon team member or others forum members respond to you.

In the meantime, you can double-check your post to see if you can add any extra information i.e. error logs, HTML codes, screenshots, etc. Check out this posting guide to help us help you better!

Thanks! :sunglasses:
Katalon Community team