-
IntelliJのメニューから New Projectを選択
-
左の欄からKotlinを選ぶ
- Name : kotlintest
- Project Template: Console Application
- Build System: Gradle Groovy
- Project JDK: JDK1.8
-
oracle maven repoにアクセスするため
~/.gradle/gradle.properties
に以下を追加
otn_user=XXXX
otn_password=XXXX
- build.gradle を変更
- shadowJarを使ってパッケージングしたい
- plugins { } の中に以下を追加
id 'com.github.johnrengelman.shadow' version '5.0.0'
id 'java'
- repositories { } の中に以下を追加
maven {
url "https://www.oracle.com/content/secure/maven/content"
credentials {
username otn_user
password otn_password
}
}
- dependencies { } を追加
dependencies {
implementation 'com.oracle.database.jdbc:ojdbc8:19.6.0.0'
implementation 'com.oracle.database.jdbc:ucp:19.6.0.0'
}
- main.kt を例えば以下のように書き直す
- 参考: https://taro.hatenablog.jp/entry/2013/08/06/214702
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.Statement
import java.sql.Connection
fun main(args: Array<String>) {
var conn: Connection? = null
var statement: Statement? = null
var resultSet: ResultSet? = null
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/XEPDB1", "user", "password")
statement = conn?.createStatement()
val sqlstring = "select sysdate from dual"
println("SQL: $sqlstring")
resultSet = statement?.executeQuery(sqlstring)
while(resultSet?.next() ?: false) {
println(resultSet!!.getString(1))
}
} catch (e: Exception) {
println(e)
} finally {
resultSet?.close()
statement?.close()
conn?.close()
}
}
- 画面右端の Gradle タブから
- application > run でビルド&実行
- shadow > shadowJar で build/libs/に 実行可能jarが作られる
java -jar build/libs/kotlintest-1.0-SNAPSHOT-all.jar
SQL: select sysdate from dual
2021-01-09 13:56:15
- なぜkotlin (JavaVM) ですか
[MBP-M1:~/DevelopM1/ocilib/demo] % gcc conntest.c -o conntest -locilib -L /opt/oracle/instantclient_19_8 -L/usr/local/lib -lclntsh
ld: warning: ignoring file /opt/oracle/instantclient_19_8/libclntsh.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
あらら無視されちゃったよ