Java8u5でDB2が繋がらない

このQ&Aのポイント
  • Java7u51でDB2を使っていましたがJava8u5をインストールしたらDB2が使えなくなりました。
  • DB2のコンパイルでクラスがないとのエラーが出ます。
  • Java8u5を入れたらDB2が繋がらない問題に関して、解決方法を教えてください。
回答を見る
  • ベストアンサー

Java8u5を入れたらDB2が繋がらない

お世話になります。 Java7u51でDB2を使っていましたがJava8u5をインストールしたら DB2が使えなくなりました。 DB2のコンパイルでクラスがないとのエラーが出ます。 import java.sql.*; import sqlj.runtime.*; import sqlj.runtime.ref.*; #sql iterator ItrPos (String, String); #sql context Myctx; class Test14{ public static void main(String[] args) { String col1 = ""; String col2 = ""; System.out.println("try"); try { Class.forName( "COM.ibm.db2.jdbc.app.DB2Driver" ); System.out.println("try1"); Myctx myctx = new Myctx("jdbc:db2:sample","user1","user1",false); System.out.println("try2"); ItrPos itr; System.out.println("try3"); #sql [myctx] itr = { select col1, col2 from Test1 }; System.out.println("select"); while (itr.endFetch() == false){ #sql { fetch :itr into :col1, :col2 }; System.out.println("fetch"); if(itr.endFetch() == false){ System.out.println(col1 + col2); } } } catch(Exception e) { System.out.println(e); if (e instanceof java.sql.SQLException) { System.out.println("error code: " + ((java.sql.SQLException)(e)).getErrorCode()); } } } }

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1620/5655)
回答No.2

>IBMの対応待ちってことでしょうか? 使用されているsqljの実装がIBMならそうなるかと思います。 また私自身はsqljの事については今回知った位なのでIBM以外の実装があるかどうかさえわかりません。

maiko0318
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1620/5655)
回答No.1

java7に戻すか、java8に対応したsqljを入手(対応したものがないなら対応待ち)するしかないかと。 sun.io.CharToByteConverterはdeprecatedだったようですし。

maiko0318
質問者

補足

ありがとうございます。 IBMの対応待ちってことでしょうか?

関連するQ&A

  • データベースに接続できません。

    javaからDB2にアクセスしようとして下記のコードを書きましたが、全く動きません。 C言語ではSQL文でコネクトできるのですが、javadでは違うようです。 得られた画面表示は try error code 0 です。 DB2 Epress-C 10.5.0.420 Java SE Development Kit Update 40 (64-bit) import java.sql.*; import sqlj.runtime.*; import sqlj.runtime.ref.*; #sql iterator ItrPos (String, String); #sql context Myctx; class Test14{ public static void main(String[] args) { String col1 = ""; String col2 = ""; System.out.println("try"); try { Myctx myctx = new Myctx("jdbc:db2:sample","user1","",false); System.out.println("try2"); ItrPos itr; System.out.println("try3"); #sql [myctx] itr = { select col1, col2 from Test1 }; System.out.println("select"); while (itr.endFetch() == false){ #sql { fetch :itr into :col1, :col2 }; System.out.println("fetch"); if(itr.endFetch()){ System.out.println(col1 + col2); } } } catch(Exception e) { if (e instanceof java.sql.SQLException) { System.out.println("error code: " + ((java.sql.SQLException)(e)).getErrorCode()); } } } }

    • ベストアンサー
    • Java
  • JDBCについて

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.Statement; public class DBtest { public static void main(String[] args){ try { Connection con = null; PreparedStatement ps = null; String url = "jdbc:mysql://localhost/address"; String user = "test"; String password = "pass"; con = DriverManager.getConnection(url, user, password); Statement st = (Statement) con.createStatement(); Statement st2 = (Statement) con.createStatement(); String sql = "SELECT * FROM data2"; ResultSet rs = st2.executeQuery(sql); try { System.out.println("ok"); // ここでクエリを実行 while(rs.next()){ System.out.println(rs.getString("name")+rs.getString("age")); } //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader na = new BufferedReader(new InputStreamReader(System.in)); String Na = na.readLine(); String ins = "INSERT INTO data2(name,age)VALUES('?',20)"; ps = (PreparedStatement) con.prepareStatement(ins); ps.setString(1,Na); ps.executeUpdate(); //INSERT実行 int rs2 = st2.executeUpdate(ins); System.out.println(rs2); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } finally { // 直前の try ブロックに入ったら、ここは必ず実行される con.close(); } } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); // 接続できない時 } } } 現在javaでmysqlに接続してDB内の検索や追加等を行うものを作成しています。 現状は入力されたものをDBに追加することまでできましたが 検索で 入力された値がDBの中に一致する、または部分一致したものを表示させるやり方がわかりません

    • ベストアンサー
    • Java
  • JavaからMDB接続について

    下記PGについて ------------------------------------ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ClassDatabase { public static Connection connection; public static Statement statement; public static ResultSet resultSet; public void main(String DBNM) { try { // Load the UCanAccess JDBC driver Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); // Define the database URL String url = "jdbc:ucanaccess://" + DBNM + ";"; // Establish the connection DB_CONNECT(url); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static void DB_CONNECT(String url) { try { connection = DriverManager.getConnection(url); } catch (SQLException e) { e.printStackTrace(); } finally { // Close the connection when you're done if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } ------------------------------------ connection = DriverManager.getConnection(url);の所ですが応答が帰って来ないほど遅いのですがどうにかなりますでしょうか? MDBと接続はできています。(整合性チェック等を行っているようです、させない方法等ありますでしょうか?)

    • ベストアンサー
    • Java
  • JDBCのDB検索

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.Statement; public class AddressDB { private static enum Procnumlist { NAME("名前"), FNAME("フルネーム"), END("終了"); private String name; private Procnumlist(String name) { } } //上の列挙型を基にした処理判定用マップを作成 private static final Map<Integer, Procnumlist> procmap; static { procmap = new HashMap<Integer, Procnumlist>(); procmap.put(1,Procnumlist.NAME); procmap.put(2,Procnumlist.FNAME); procmap.put(6,Procnumlist.END); } //結果 //ResultSetは受け取らない private static void ans(List<Addr> ans) { try { System.out.println("検索結果"); for (int i = 0; i < ans.size(); i++) { Addr addr = ans.get(i); System.out.println(addr.getName() + ":" ); } } catch (SQLException e) { e.printStackTrace(); } finally { //閉じる。 close(); } } //名前検索(フルネーム) private static List<Addr> srchFName(String keyword,Connection con) throws IOException { String sql = "SELECT * FROM data2 where name=?"; PreparedStatement ps = null; try{ ps = (PreparedStatement) con.prepareStatement(sql); ps.setString(1,keyword); ResultSet rs = ps.executeQuery(); //List<Addr> result = new ArrayList(Addr); while(rs.next()){ rs.getString("name"); } }catch (SQLException ex) { } return null; } //名前検索 private static List<Addr> srchName(String keyword,Connection con) throws IOException { String sql = "SELECT * FROM data2 where name like ?"; PreparedStatement ps = null; try{ ps = (PreparedStatement) con.prepareStatement(sql); ps.setString(1,"%"+keyword+"%"); ResultSet rs = ps.executeQuery(); while(rs.next()){ Addr addr = rs.getString("name"); } }catch (SQLException ex) { } return result; } private static boolean checkProcNum(int value) { return procmap.get(value) != null; } public static void main(String[] args)throws IOException{ while(true) { createConeection(); //処理条件入力 System.out.println("検索\n1.名前(ファーストネーム)で検索\n2.フルネームで検索\n6.終了"); //検索値入力 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int procnum = Integer.valueOf(br.readLine()); //入力チェック if (!checkProcNum(procnum)) { System.out.println("正しい値を入れてください。"); continue; } Procnumlist proc = procmap.get(procnum); if (proc == Procnumlist.END) { break; } if(proc == Procnumlist.NAME){ System.out.println("名前を入力してください。"); BufferedReader name = new BufferedReader(new InputStreamReader(System.in)); String keyword = name.readLine(); List<Addr> result = srchName(keyword,null); ans(result); } if(proc == Procnumlist.FNAME){ System.out.println("フルネームを入力してください。"); BufferedReader name = new BufferedReader(new InputStreamReader(System.in)); String keyword = name.readLine(); List<Addr> result = srchFName(keyword,null); ans(result); } } } //コネクション private static Connection createConeection() { String url = "jdbc:mysql://localhost/address"; String user = "test"; String password = "pass"; try { return DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); return null; } } } 現在JDBCでDB接続し入力された値をDBから検索し出力するものを作成しておりますが詰んでしまいました。 入力した値をsrchで検索し結果をansで出力しようとしています。どのようにしたらよいのでしょうか

  • Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

    すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。 ●Javaプロジェクトの場合(成功)  ・Javaプロジェクト作成 → 新規 → クラスを作成。  ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  ・次のソースの実行にて、JDBC Dirverの接続を確認。 [JdbcSample.java] import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "(ユーザー名)", "(パスワード)"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } ●TomCatプロジェクト作成の場合(失敗)  (1)TomCatプロジェクト作成 → 新規 → クラスを作成。  (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  (3)サーブレットからBeanの呼び出し。  「​http://localhost:8080/test_mvc/jdbcSample​」  (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?) [servlet] package ne.jp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestMvc extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JdbcSample da = new JdbcSample(); try { da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // HTML出力の準備 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body><p>こんにちわ!</p></body>"); } } [Bean] package ne.jp; import java.sql.*; class JdbcSample { //Beanコンストラクタ public JdbcSample(){ } //データベースアクセス確認 public void dbAccessTest(){ try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "***", "*****"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } }

    • ベストアンサー
    • Java
  • eclipse,mysql,javaエラー

    Class.forName("com.mysql.jdbc.Driver")が接続出来ません どなたかお教え頂けないでしょうか MySQLを再インストールしてもだめです 下記環境で動かしています。 eclipse-3.72 MySQL5.5.13,JDBC:4.0.0 mysql-connector-java5.1.17-bin.jar jdk.1.6.0_26 eclipseで 接続プロファイルを作成し、mysql-connector-java5.1.17-bin.jarを設定して 接続デスト pingが正常に完了しましたで問題がありません。 またjavaのビルド・パスにもmysql-connector-java5.1.17-bin.jarが有りますが javaを実行すると下記状態になります Class.forName("com.mysql.jdbc.Driver")が接続出来ません 下記が実行ソースプログラム import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class test01 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>データベーステスト</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>"); Connection conn = null; String url = "jdbc:mysql://localhost/testdb"; String user = "root"; String password = "test"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("ドライバのロードに成功しました<br>"); conn = DriverManager.getConnection(url, user, password); out.println("データベース接続に成功しました<br>"); }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); out.println("データベース切断に成功しました"); }else{ out.println("コネクションがありません"); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("</p>"); out.println("</body>"); out.println("</html>"); } }

    • ベストアンサー
    • Java
  • Javaからストアド実行(配列項目)

    Javaからストアドを実行しようとしていますが、 単項目のIN、OUTは問題ないのですが IN引数を配列にしようとした場合うまく処理できません。 ARRAY array = new ARRAY(ad, con, values);のところで java.sql.SQLException Non supported character set: oracle-character-set-832 で落ちてしまいます。 原因であると思われた、CLASSPATHにnls_charset12.jarが通っているかということも確認しました。 原因が分かる方がいましたら教えていただきたく思います。 よろしくお願いします。 環境 OS : WindowsXP DB : Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 JDBC : Oracle JDBC Driver 9.2.0.5 JDK : JDK 1.4.2 ---------------------------------------------------------------- import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import oracle.jdbc.OracleCallableStatement; import oracle.jdbc.OracleTypes; import oracle.sql.ARRAY; import oracle.sql.ArrayDescriptor; public class TestPlsql { public static void main(String[] args) throws Exception { String username = "ID"; String password = "PASS"; String thinConn = "jdbc:oracle:thin:@DBADD:1521:DBNAME"; try { // Oracle JDBC driverをロードします。 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); // DB接続 Connection con = DriverManager.getConnection(thinConn,username,password); // SQLコンテナ作成 // 引数:IN IN OUT OUT IN OUT String sql = "{call TEST_PKG.TEST_PRO(?,?,?,?,?,?)}"; OracleCallableStatement cstmt = (OracleCallableStatement)con.prepareCall(sql); cstmt.setInt( 1, 999 ); cstmt.setString( 2, "TEST" ); cstmt.registerOutParameter( 3, OracleTypes.INTEGER ); cstmt.registerOutParameter( 4, OracleTypes.VARCHAR ); // 配列 String[] values = {"18", "25", "104", "53", "29"}; ArrayDescriptor ad = ArrayDescriptor.createDescriptor("VCHAR2ARRAY", con); ARRAY array = new ARRAY(ad, con, values); ///////ここでエラー cstmt.setArray(5, array); cstmt.registerOutParameter(6, OracleTypes.ARRAY, "VCHAR2ARRAY"); // SQL実行 cstmt.execute(); // OUT引数の値を取得する System.out.println(cstmt.getInt(3)); System.out.println(cstmt.getString(4)); ARRAY array2 = (ARRAY) cstmt.getArray(6); String[] s = (String[]) array2.getArray(); for (int i=0; i<s.length; i++) { System.out.println(s[i]); } cstmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } }

  • java データベース接続

    javaの勉強していまして、質問があります。よろしくお願いします。 javaでデータベースの接続ができなくて迷っております。ずっとネットで調べてもダメでした。 ネットで調べたとおりにやっても、 例外発生:java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver このようなエラーがでます。 eclipseを使ってます。windows7 練習にアクセスにつなごうと思ってます。 事前にデータソース(ODBC)の登録はしました。 ドライバーとかインストールするものなのでしょうか? package sample; import java.sql.Connection; import java.sql.DriverManager; public class Hello { public static void main(String args[]) { try { //JDBCドライバのロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //各設定 String url = "jdbc:odbc:SampleDB030"; String user = ""; String pass = ""; //データベースに接続 Connection con = DriverManager.getConnection(url,user,pass); System.out.println("接続成功"); //データベースを切断 con.close(); } catch (Exception e) { System.out.println("例外発生:" + e ); } } }

    • ベストアンサー
    • Java
  • JDBCで配列を使ったSQL文(INSERT)

    早速ですがお願いします。例えば下のプログラムでのSQL文なのですが、配列str1[0]の中身”みかん”をINSERTしたいのですが、やりかたがわかりません。プログラミングの素人なので簡単な質問で申し訳ないですけど、どなたか教えてくれないでしょうか? ちなみにこのプログラムでstr1[0]のところを直接みかんと入れたらデータベースに追加することはできました。 import java.sql.*; class jdbc{ public static void main(String args[]){ String[] str1 = new String[1]; str1[0] = "みかん"; try{ Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql:test"; String user = ""; String password = ""; System.out.println("URL :" + url); System.out.println("USER :" + user); System.out.println("PASSWORD :" + password); Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int insertCount = stmt.executeUpdate("INSERT INTO shinamono (hinmei,nedan) VALUES ('+str1[0]+', 1500)"); if (insertCount >0){ System.out.println("追加しました"); }else{ System.out.println("追加できませんでした"); } conn.commit(); stmt.close(); conn.close(); }catch(SQLException e){ e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); } } } なおエラーメッセージは次の通りです。 java.sql.SQLException: ERROR: column "みかん" does not exist at org.postgresql.Connection.ExecSQL(Connection.java:533) at org.postgresql.jdbc2.Statement.execute(Statement.java:294) at org.postgresql.jdbc2.Statement.executeUpdate(Statement.java:78) at jdbc.main(jdbc.java:21)

  • javaからmysqlに接続ができません。

    よろしくお願いします。 JavaからMySqlに接続ができなくて困っています。 <環境> OS:Windows XP JDK : jdk1.6.0_02 JDBC Driver for MySQL : mysql-connector-java-5.1.5-bin.jar Java、MySql単体では正常に動作しているようですが、ドライバを認識できず、JavaからMySqlに接続することができません。 ---コード------------------------------------------ import java.net.*; import java.sql.*; public class SqlSample1{ String url = "jdbc:mysql://localhost/test_db"; String user = "root";//ユーザ名 String pass = "admin";//パスワード Connection con = null; //コンストラクタ public SqlSample1(){ init();//初期化 fin();//終了 } //初期化 public void init(){ try{ //ドライバのロード Class.forName("org.gjt.mm.mysql.Driver"); //MySQLサーバへの接続 con = DriverManager.getConnection(url,user,pass); System.out.println("Connected!!"); }catch(SQLException e){ System.err.println("SqlException:\n"+e.toString()); }catch(Exception e){ e.printStackTrace(); } } //終了:開放 public void fin(){ try{ con.close(); System.out.println("Closed."); }catch(SQLException e){ System.err.println("SqlException:\n"+e.toString()); }catch(Exception e){ e.printStackTrace(); } } public static void main(String args[]){ SqlSample1 ss1=new SqlSample1(); } } ----------------------------------------------------------- ----エラーメッセージ--------------------------------------- SqlException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure Last packet sent to the server was 0 ms ago. java.lang.NullPointerException at SqlSample1.fin(SqlSample1.java:41) at SqlSample1.<init>(SqlSample1.java:18) at SqlSample1.main(SqlSample1.java:53) ------------------------------------------------------------ ※C:\mysql-connector-java-5.1.5の下のmysql-connector-java-5.1.5-bin.jarファイルにCLASSPATHを設定しています。 初心者のためへたくそな質問になっているかもしれません。 申し訳ありません。 上記の情報が不十分な場合はご指摘をお願い致します。

専門家に質問してみよう