###########################################################
# Connect to Oracle using Type 4 Java driver.
###########################################################
#########################################################
## Source packages.
#########################################################
#
package require java
#################################################################
# putsLog with timestamp.
####################################################################
proc putsLog { a } {
set host [ info host ]
set compTime [clock format [clock seconds] -format "%Y-%m-%d-%H.%M.%S"]
puts "\[$host:$compTime\] $a"
}
#######################################
## Proc - oracleConnect.
#######################################
proc oracleConnect { serverName databaseName portNumber driverType username password sqlQuery } {
putsLog "proc - [info level 0 ]"
# import required classes
java::import java.sql.Connection
java::import java.sql.DriverManager
java::import java.sql.ResultSet
java::import java.sql.SQLWarning
java::import java.sql.Statement
java::import java.sql.ResultSetMetaData
java::import java.sql.DatabaseMetaData
java::import oracle.jdbc.OracleDatabaseMetaData
# load database driver .
java::call Class forName oracle.jdbc.OracleDriver
# set the connection url.
append url jdbc:oracle:thin
append url :
append url $username
append url /
append url $password
append url "@"
append url $serverName
append url :
append url $portNumber
append url :
append url $databaseName
putsLog "connection URL is: $url\n"
set ConnectionI [ java::call DriverManager getConnection $url ]
putsLog "transaction isolation level is [ $ConnectionI getTransactionIsolation ]"
putsLog "#########################################"
putsLog "### Database connection details"
putsLog "#########################################"
# get the database metadata information.
#Retrieves a DatabaseMetaData object that contains metadata about the database
#to which this Connection object represents a connection.
set DatabaseMetaDataI [ $ConnectionI getMetaData ]
putsLog [ $DatabaseMetaDataI getDatabaseProductName ]
putsLog [ $DatabaseMetaDataI getDatabaseProductVersion ]
putsLog "database version [ $DatabaseMetaDataI getDatabaseMajorVersion ]\.[ $DatabaseMetaDataI getDatabaseMinorVersion ]"
putsLog "driver version [ $DatabaseMetaDataI getDriverName ] [ $DatabaseMetaDataI getDriverMajorVersion ]\.[ $DatabaseMetaDataI getDriverMinorVersion ]"
putsLog "jdbc version [ $DatabaseMetaDataI getJDBCMajorVersion ]\.[ $DatabaseMetaDataI getJDBCMinorVersion ]"
putsLog "connect username [ $DatabaseMetaDataI getUserName ]"
putsLog "transaction isolation level is [ $ConnectionI getTransactionIsolation ] \n"
# get a list of table names in database.
# if there are no tables the results set is empty.
set opt1 [java::field ResultSet TYPE_SCROLL_INSENSITIVE]
set ResultSetI [ $DatabaseMetaDataI getCatalogs ]
set ResultSetMetaDataI [ $ResultSetI getMetaData ]
set columnCount [ $ResultSetMetaDataI getColumnCount ]
putsLog "Column Count is $columnCount"
set i 1
while { $i <= $columnCount } {
set columnName [ $ResultSetMetaDataI getColumnName $i ]
lappend columnList $columnName
incr i
}
unset i
putsLog $columnList
$ResultSetI close
$ConnectionI close
}
######################################
# Main Control.
######################################
putsLog "executing [info script]"
# make script drive independent.
set drive [lindex [file split [info nameofexecutable]] 0 ]
set reportFile C:\\reports\\oracleConnect.txt
set reportFileId [ open $reportFile w ]
set serverName xxxx
set databaseName xxxx
set portNumber 1234
set driverType 4
set username xxxx
set password xxxx
set sqlQuery "select * from aaaa.bbbb where char(customer) like '287554%'"
oracleConnect $serverName $databaseName $portNumber $driverType $username $password $sqlQuery