eclipseにてPostgresへの接続がエラーになる原因は何か?

このQ&Aのポイント
  • eclipseでPostgresqlへ接続するAndroidアプリを開発中ですが、接続ができません。エラーメッセージは『org.postgresql.Driver』です。
  • JDKバージョン1.6.0_35とPostgresql 8.1.23を使用しています。ダウンロードしたJDBCはpostgresql-9.2-1000.jdbc4.jarです。
  • システム環境変数のPathも通しており、NavicatなどでDBの閲覧はできる状況ですが、eclipseでの接続にエラーが出ています。原因を教えてください。
回答を見る
  • ベストアンサー

eclipseにてPostgresへの接続

当方、eclipseにてPostgresqlへ接続するAndroidのアプリを開発しておりますが、 どうしてもエラーにて接続ができません... ご存知の方ご教授のほどよろしくお願いいたします。 JDK version 1.6.0_35 Postgresql 8.1.23 ダウンロードしてきたJDBCはpostgresql-9.2-1000.jdbc4.jar エラーが出る箇所は int count = 0; String sql = "test"; try{ Class.forName("org.postgresql.Driver").newInstance(); ←【ここでエラー】 Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.3/test_db","hoge","hoge"); Statement stmt = con.createStatement(); sql = "select * from customer"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ count++; } }catch(SQLException e){ Log.v("SQLException:",e.getMessage()); }catch (Exception e1) { // TODO: handle exception Log.v("DBエラー", e1.getMessage()); }finally{ Toast.makeText(this, Integer.toString(count), Toast.LENGTH_LONG).show(); } エラー内容は『org.postgresql.Driver』と出ます。 システム環境変数からPathも通してあります。 何か考えられる原因はありますでしょうか? 参考までにNavicatなどでDBの閲覧はできる状況になっております。 よろしくお願いいたします。

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

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

  • ベストアンサー
noname#177743
noname#177743
回答No.1

newInstance();を削除して、Class.forName("org.postgresql.Driver");だけにしてみてください。

nex2008
質問者

補足

早々のご回答ありがとうございます。 ご指摘の通り試してみましたが同じエラー接続できませんでした。

関連するQ&A

  • postgresql接続時

    お世話になっています。 現在、postgresqlに接続し、指定のデータがなければ、dbを切断し、 切断中に、dbに接続されたら、エラーを発生させるようなプログラムを作成しています。 その際、org.postgresql.util.PSQLException: This ResultSet is closed.のようなエラーが発生します。 原因として、ResultSetにあるというのはわかるのですが、 ソースは、以下のように組んでいます。 static Connection con = null; static Statement stmt = null; static ResultSet rs ;; try { Class.forName("org.postgresql.Driver"); // PostgreSQLの場合 con = DriverManager.getConnection ("jdbc:postgresql:sample","moon","post"); // ステートメントオブジェクトを生成 stmt = con.createStatement(); String sql = " select id,pw from login where id='test' and pw='a'"; System.out.println(sql); // クエリーを実行して結果セットを取得 rs = stmt.executeQuery(sql); boolean ba = rs.next(); //もし、idがなければ、dbを閉じる if(ba == false) { System.out.println("rs:"+rs.next()); stmt.close(); con.close(); rs.close(); } catch (SQLException e) { } catch (ClassNotFoundException c) { } catch(Exception es) { } finally { } //この時点で、指定のid,pwが存在していないので、dbは切断中 //この状態でdbにアクセスする String sql = " select * from login"; // クエリーを実行して結果セットを取得 try { // ここから if(con !=null && stmt != null && rs !=null) { while(rs.next()) { System.out.println(rs.getString("id")); } }//ここまでが、何かがおかしい else {} } catch (SQLException e) {} この場合、どこが間違っているのでしょうか? 宜しくお願いします。

  • AndroidからPostgresqlへの接続

    どうしてもうまくいかないので教えてください。。。 当方Eclipseにてアンドロイドアプリを開発しております。 具体的には自宅にあるServerに地図情報が蓄積されており その情報をGoogleMapを使い地図上にプロットするといったものです。 いろいろなサイトを参考にEclipse付属のAndroidエミュレーターで ローカルにあるServerに接続し地図上に情報をプロットする事ができました! Eclipse(開発PC) 192.168.1.5 PostgresSV 192.168.1.10 そして、いよいよ実機のGalaxyS3へインストールして起動してみたのですが、 【なにかドライバを失敗させる変化が起こりました。どうぞこの例外を報告してください。】 と言うエラーを吐きデータを取得できません。 ちなみに、GalaxyS3をWi-FiにてローカルIPにしてもDoCoMo回線のグローバルIPにしても 同じエラーを吐き情報の取得ができません。 PostgresSVのポートはルーターで設定してグローバルからも通してあります。 そもそもこのjdbcはAndroidで利用する事ができないのでしょうか? 参考までに接続する部分のソースを載せます。 try{  Class.forName("org.postgresql.Driver").newInstance();  Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.10/map_data","hogehoge","hogehoge");  Statement stmt = con.createStatement();  rs = stmt.executeQuery(stSql);    }catch(SQLException e){   Log.v("SQLException:",e.getMessage());    }catch (Exception e1) {        // TODO: handle exception  Log.v("DBエラー", e1.getMessage());       }finally{       } どなたかわかる方お願いします。

    • ベストアンサー
    • Java
  • 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
  • mysqlへの接続が出来ません

    まずは、サンプルプログラミングをコピーして実行してみましたが、上手くいきません。 package Connection; import java.sql.*; public class DBtest { public static void main(String[] args) { //java.sql Connection con = null; Statement stmt = null; ResultSet rs = null; String sqlStr; try { //ドライバクラスをロードする Class.forName("org.gjt.mm.mysql.Driver"); //MySQLに接続 con = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "8080", "password"); //ステートメント生成 stmt = con.createStatement(); //SQL文 sqlStr = "SELECT * FROM TABLE"; //SQL文実行 rs = stmt.executeQuery(sqlStr); //検索結果数だけループ while(rs.next()){ //レコードの値 int id = rs.getInt("ID"); String name = rs.getString("NAME"); //表示 System.out.println(id + ":" + name); } //クローズ rs.close(); stmt.close(); con.close(); } catch (Exception ex) { try { //クローズ if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (con != null) con.close(); } catch (Exception e) { } //エラー ex.printStackTrace(); } } } 上記はEclipseでは文法エラーはありません。で実行してみると java.sql.SQLException: Access denied for user '8080'@'localhost' (using password: YES)になります。 サンプルにはDbname、ID,Passとあるので実際のDbnameとパスワードを入れているのですが駄目です。 IDは意味が良くわからないので8080を入れてみました。 どなたか教えて下さい。お願いします。 尚、当方全くの初心者です宜しくお願い致します。

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

    お世話になります。 MSDE2000にJDBCにて接続したいのですが、SQLExceptionが発生して接続できません。 JDBCドライバーはMSよりDLして、CLASSPATHに追加しております。 環境は OS:Win2K Pro JAVA:jdk1.3.1_18 です。 JAVAのソースは下記のとおりです。 import java.sql.*; import java.io.*; import java.util.*; public class SQLServerJDBCTest { public static void main(String[] args) { // ログインに必要な情報 String user = "sa"; //ユーザ名 String pass = "password"; //パスワード try { // ドライバクラスをロード Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // データベースへ接続 Connection con = DriverManager.getConnection ("jdbc:microsoft:sqlserver://127.0.0.1:1433",user,pass ); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); // クエリーを実行して結果セットを取得 String sql = "SELECT GETDATE()"; ResultSet rs = stmt.executeQuery(sql); // 表示 while (rs.next()) { System.out.println(rs.getString(1)); } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } おかしな点や追加設定等ありましたらご指摘ください。 (投稿文字制限でExceptionの内容が載せられませんでした。) また、MSDEのバージョン7に接続する場合、同じJDBCドライバーで、同じ設定でいいのでしょうか? よろしくお願いいたします。

  • JDBC PostgreSQLで必要なファイルはあるのでしょうか?

    LinuxでPostgreSQLのデータベースをJDBCでアクセスしたいのですが、以下のソースで次のエラーが発生します。何か必要なファイルでもあるのでしょうか? java.lang.ClassNotFoundException:org.postgres.Driver また、LinuxのODBCも必要なファイルがあるのでしょうか? import java.sql.*; class jdbcSample2 { public static void main(String argv[]) { int a; String b; try { //Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); //String url = "jdbc:odbc:test"; Class.forName ("org.postgres.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/test"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement (); String query = "select * from member;"; ResultSet rs = stmt.executeQuery (query); while(rs.next()){ a = rs.getInt(1); b = rs.getString(2); System.out.println(a + ", " + b); } rs.close(); stmt.close(); con.close(); } catch (SQLException ex) { System.err.println("SQL failed."); ex.printStackTrace (); } catch (Exception ex) { ex.printStackTrace (); } } }

  • JavaサーブレットからSQL Server の接続ができません。

    環境は、 OS:win XP Webサーバ:tomcat5.5 統合開発環境:eclipse3.2 DB:SQL server 2005 です。 SQLserverのJDBCドライバ(sqljdbc.jsp)を、%CATALINA_HOME%common/libに配置し、DB接続用のサーブレットを作成、デバッグを行いましたが、 com.microsoft.sqlserver.jdbc.SQLServerException: TDS ログイン前応答が不完全です。対象サーバーは SQL Server 2000 以降である必要があります。 とのエラーが表示され接続できませんでした。 またデバッグを行ったところ、 Class.forName(driver); までは通りますが、次の行の con = DriverManager.getConnection(url,user,passwd); でエラーになるようです。次のステップは、データベース切断の public synchronized void close() throws Exception { 行に飛んでしまいます。 どなたかお気づきの方がおられればご回答願います。 ソースは以下の通りです。 //////////////////////////////////////////// package report.pack; import java.sql.*; public class DatabaseAccess { private String driver; private String url; private String user; private String passwd; private Connection con; private Statement stmt; private ResultSet rs; /** * コンストラクタ */ public DatabaseAccess() { driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; url = "jdbc:sqlserver://localhost:8080;databaseName=testdb;"; user = ""; passwd = ""; } /** * データベースに接続 */ public synchronized void open() throws Exception { // ドライバクラスをロード Class.forName(driver); // データベースへ接続 con = DriverManager.getConnection(url,user,passwd); // ステートメントオブジェクトを生成 stmt = con.createStatement(); } /** * データベースから切断 */ public synchronized void close() throws Exception { if (stmt!=null) { stmt.close(); } if (con!=null) { con.close(); } } /** * クエリーを実行(検索) */ public ResultSet executeQuery(String sql) throws Exception { return stmt.executeQuery(sql); } /** * クエリーを実行(新規、更新、削除) */ public int executeUpdate(String sql) throws Exception { return stmt.executeUpdate(sql); } } //////////////////////////////////////

  • PostgresのCOPY文はできない?

    Postgres7.3.4 を使用しています。 サーバ内にファイルを作成し、 それをまとめてDBに受入れるシステムを作成中です。 ファイルを作成するところまでは問題ないのですが、 JDBC経由で COPY文を発行できず困っています。 具体的には Statement stmt = conn.createStatement(); Stirng sql = "COPY table FROM 'file'"; stmt.execute(sql); ということをしたいのですが実行時エラーになります。 Exception in thread "main" java.sql.SQLException: ERROR: copy: line 1, Invalid EUC_JP character sequence found (0xbb00) 「文字シーケンスが無効です。」ということですが・・・ Connectionはスーパーユーザ権限で作成しています。 psqlコマンドで直接COPY文を実行すると成功します。 文字コードの問題なのでしょうか? あるいは insert文を使うようにするしかないのでしょうか?

    • ベストアンサー
    • Java
  • コネクションプールについて

    コネクションプール有とコネクションプール無でDB接続・切断を繰り返したときに どれくらい差があるか試してみようと思いWebアプリ上(フレームワークにStruts2を使用)で 下記コードを実行してみました。 dbcpConnectメソッド(コネクションプール有) と jdbcConnectメソッド(コネクションプール無) をそれぞれ千回づつループで回して実行してみました。 結果は 【コネクションプール有】実行にかかった時間:157384 ミリ秒 【コネクションプール無】実行にかかった時間:158760 ミリ秒 で大差はありませんでした。 コネクションプールを使用するともう少し早いと思っていたのですがそのようなことはないのでしょうか。 public String test4() { // コネクションプール有の接続 long start = System.currentTimeMillis(); for(int i=0; i< 1000; i++) { dbcpConnect(); } long stop = System.currentTimeMillis(); System.out.println("実行にかかった時間は " + (stop - start) + " ミリ秒です。"); // コネクションプール無の接続 start = System.currentTimeMillis(); for(int i=0; i< 1000; i++) { jdbcConnect(); } stop = System.currentTimeMillis(); System.out.println("実行にかかった時間は " + (stop - start) + " ミリ秒です。"); return "jstl4"; } public void dbcpConnect() { Connection con = null; try{ Context context = new InitialContext(); //DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/library"); DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/dhcpTest"); con = ds.getConnection(); Statement stmt = con.createStatement(); String sql = "SELECT * FROM test.test"; ResultSet rs = stmt.executeQuery(sql); } catch(Exception e) { System.out.println("Error"); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } public void jdbcConnect() { Connection con = null; try{ con = DriverManager.getConnection("jdbc:mysql://localhost", "root", "root"); Statement stmt = con.createStatement(); String sql = "SELECT * FROM test.test"; ResultSet rs = stmt.executeQuery(sql); } catch(Exception e) { System.out.println("Error"); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • JSPからMYSQLへの接続について

    はじめまして 初めて質問をさせていただきます。 qazxsw1と申します。 タイトルの通り、JSPからMYSQLに接続するプログラムなのですが、下記のようなエラーが出て、その後試行錯誤しましたがやはりうまくいきません。 java.sql.SQLException: Access denied for user 'mysql'@'localhost' (using password: YES) 参考にさせていただいたサイトは以下の通りです。 http://www.hellohiro.com/jspdb.htm mysql-connector-java-○.○-bin.jarファイルは[Tomcatのフォルダ]\shared\libにあります。 バージョンはTomcat4.1、MySQL Server4.1です。 ソースコードは以下の通りです。 データベース名、ユーザ名、パスワードは伏せてあります。 お手数ですが、詳しい方がいらっしゃいましたらよろしくお願いします。  <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.sql.*" %> <% Connection con = null; Statement stmt = null; try { // ドライバクラスをロード Class.forName("org.gjt.mm.mysql.Driver"); // データベースへ接続 String url = "jdbc:mysql:///データベース名?useUnicode=true&characterEncoding=SJIS"; con = DriverManager.getConnection(url, "ユーザ名", "パスワード"); // ステートメントオブジェクトを生成 stmt = con.createStatement(); // 全ての行を検索するSQL文を作成 String sql = "SELECT * FROM kaiin_tbl"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); %> <html> <head> <title>JSPでDB接続</title> </head> <body> <table border="1"> <tr> <th>NO</th> <th>言語</th> <th>メッセージ</th> </tr> <% // 検索された行数分ループ while(rs.next()){ %> <tr> <td><%=rs.getInt("NO") %></td> <td><%=rs.getString("LANGUAGE") %></td> <td><%=rs.getString("MESSAGE") %></td> </tr> <% } // end while %> </table> </body> </html> <% } catch (Exception e) { out.println("<font color=red><h3>エラー!</h3></font>" + e); e.printStackTrace(); } finally { // データベースへの接続をクローズします try { if (stmt!=null) { stmt.close(); } if (con!=null) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } %>

専門家に質問してみよう