前提・実現したいこと
プレーン(意図→SpringBootやIntellijを使わずにテキストエディタでktファイルを書いてkotlinc-jvm.batでコンパイルし、コマンドプロンプトで実行)なKotlinで、PotgreSQLに接続し、とりあえずselect文を実行し、結果を取得したい。
発生している問題・エラーメッセージ
コマンドプロンプト上で下記を実行すると、
kotlinc-jvm.bat -cp "~\postgresql-42.2.5.jar" -include-runtime -d postgre.jar postgre.kt java -jar postgre.jar
以下のエラーが出ます。
java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/postgres at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) at PostgreKt.main(postgre.kt:19)
該当のソースコード
Kotlin
1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.ResultSet; 4import java.sql.SQLException; 5import java.sql.Statement; 6 7fun main(args:Array<String>) { 8 var conn: Connection? = null; 9 var stmt: Statement? = null; 10 var rset: ResultSet? = null; 11 12 //接続文字列 13 val url: String = "jdbc:postgresql://localhost:5432/postgres"; 14 val user: String = "user"; 15 val password: String = "password"; 16 17 try{ 18 //PostgreSQLへ接続 19 conn = DriverManager.getConnection(url, user, password); //ここでエラー!! 20 21 //自動コミットOFF 22 conn.setAutoCommit(false); 23 24 //SELECT文の実行 25 stmt = conn.createStatement(); 26 val sql: String = "SELECT 1"; 27 rset = stmt.executeQuery(sql); 28 29 //SELECT結果の受け取り 30 while(rset.next()){ 31 val col: String = rset.getString(1); 32 System.out.println(col); 33 } 34 35 //コミット 36 conn.commit(); 37 } 38 catch (e: SQLException){ 39 e.printStackTrace(); 40 } 41 finally { 42 try { 43 rset?.close(); 44 stmt?.close(); 45 conn?.close(); 46 } 47 catch (e: SQLException){ 48 e.printStackTrace(); 49 } 50 51 } 52} 53
試したこと
https://teratail.com/questions/184755
上記URLにて、JRE8以降向けのドライバと記載があったので、下記の2つも試しましたが、同様のエラーでした。
postgresql-42.2.5.jre6.jar
postgresql-42.2.5.jre7.jar
また、よくある対処法にClass.forNameがあるようなので
getConnectionの直前に下記を追記した場合、
Class.forName("com.postgresql.jdbc.Driver");
下記のエラーが出ました。
Exception in thread "main" java.lang.ClassNotFoundException: com.postgresql.jdbc.Driver
補足情報(FW/ツールのバージョンなど)
・jarファイルのパスやpasswordなどは変更しています。
・Windows10 pro 64bit
・PostgreSQL12
・kotlincは1.3.60(多分)
・プレーン(?)を選択した理由は、初めてのプログラミングでいきなり使うには選択肢が多過ぎて手がつけられないと感じたからです。詳細は割愛しますが、まずは私が理解できる単純なケースから手をつけようと思いました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/04 13:05