Java
1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.util.ArrayList; 7import java.io.IOException; 8import java.sql.Statement; 9 10public class DBExecQuery { 11 public static void main(String[] args) { 12 13 if (args.length!=0) { 14 int linePopulation = Integer.parseInt(args[0]); 15 System.out.println(linePopulation); 16 17 try( 18 // DB接続 19 Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//172.16.4.6:1521/infopdb", "uenoa", "uenoa"); 20 // ユーザー名、パスワード 21 22 // SQL実行用オブジェクトの作成 23 Statement stmt = con.createStatement(); 24 ){ 25 // SQL実行と結果格納 26 ResultSet rs = 27 stmt.executeQuery("select 県名, 人口 from REVENGE where 人口 = 812056"); 28 29 while(rs.next()) { 30 String name = rs.getString("県名"); 31 int population = rs.getInt("人口"); 32 33 System.out.println("県名 " + name + " : 人口 " + population); 34 } 35 //PreparedStatement pStmt = con.prepareStatement(sql); 36 //pStmt.setInt(1, userId); 37 //ResultSet rs = pStmt.executeQuery(); 38 39 // コミット 40 try { 41 con.commit(); 42 } 43 catch(SQLException ex) { 44 // コミットに失敗したら全作業をなかったことにする 45 con.rollback(); 46 } 47 } 48 catch(SQLException ex) { 49 ex.printStackTrace(); 50 } 51 } 52 else { 53 System.out.println("コマンドライン引数を指定してください"); 54 } 55 } 56}
sqlを使ったjavaプログラムを実行したいのですが、コマンドプロンプトで
①javac Main.java
②java -cp .;jdbc10.jar Main
だと実行できるのですが、コマンドライン引数を指定して
②java -cp .;jdbc10.jar Main 12345
とすると実行できなくなってしまいます。
エラーの内容はjava.sql.SQLException: No suitable driver foundです。
解決方法があればお願いします。
どういうコードになっているのでしょうか。
また「実行できなくなる」とはエラー等は出てるのでしょうか
その質問の記述内容では第三者に原因は分かりません。*.jarファイルは関係ないと思います。
コマンドライン引数の取り扱い方が間違っているのでは?「実行できない」と言う言葉も、「実行できない」とは一般的にプログラム自体が起動しない(≒実行不可能)なような意味を指します。
例外が起きて要望通り動作していないのか、例外は起きていないけど思ったように動いていないのか、それとも他の事象か。
ちゃんと説明しましょう。
[質問するときのヒント] https://teratail.com/help/question-tips
投稿した後に気付き、編集しました。ご指摘ありがとうございます。
コードはマークダウンにてご提示ください
ただ、半端な状態で提示されても再現確認はできませんし問題が見えてきません。原則全て提示してください
> ②java -cp .;jdbc10.jar Main
> だと実行できるのですが、
引数が指定されていることでif (args.length!=0) {の節のコードが実行されて、例外が起きているだけ。
jarファイルの問題でも無いし、コマンドライン引数の指定の問題でもない。
本質は"java.sql.SQLException: No suitable driver found" です。
> jarファイルの問題でも無いし、
jarファイルに問題は無い、とは言えませんね。これは訂正させていただきます。動こうが動かなかろうが、少なくともCLASSPATHに正しいJDBCドライバーのJARファイルの指定は必要です。
そうですね、少し調べてみます。ありがとうございます。
ちなみにファイル名"jdbc10.jar"で合っているのでしょうか。頭に"o"が付く"ojdbc10.jar"ならOracleのサイトに見つかりますが。
https://www.oracle.com/database/technologies/appdev/jdbc-ucp-19c-downloads.html
自己解決するにしても「どう解決したか」書かないと誰にも伝わりません
回答1件
あなたの回答
tips
プレビュー