• ベストアンサー

getConnection( )メソッドの戻り値

御世話になります。 下記のプログラムで「型 Connectionの結果を戻す必要があります」 とエラーが出てしまうのですが、原因が分からず困っております。 過去ログをみても分からなかった為、ご教示いただけます様 宜しく御願い致します。 package info.aaaa; import java.sql.Connection; import java.sql.DriverManager; public class DBManager{ public static Connection getConnection(){ try{ Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/aaaa?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url,"cccc","vvvv"); return con; } catch(Exception e){ } } public static void main(String args[]) throws Exception{ Connection con = getConnection(); System.out.println("con=" + con); con.close(); } }

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

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

  • ベストアンサー
  • darlinr
  • ベストアンサー率27% (11/40)
回答No.2

try catch部分で例外が発生したとき(catch)のreturnがないからです。 try catch部分にfinallyを追加してConnectionの開放処理やreturnの処理をすればよいかと思います。

eisuuji123
質問者

お礼

教えて頂き本当に有難うございました。 お陰様でエラーを無くす事が出来ました。 もっと精進いたしますm(__)m

その他の回答 (1)

回答No.1

tryブロック内で例外が発生した時の、 return文が記述されていないためです。

eisuuji123
質問者

お礼

教えて頂き本当に有難うございました。 お陰様でエラーを無くす事が出来ました。

関連するQ&A

  • 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
  • サーブレットに関して

    ポスグレのデータベースをイクリプスと連携させようとしています。 現状は接続の確認として下記Connect13.javaを実行し接続確認をしています。 しかし、405が表示されてしまい接続が上手くいきません。 どこが間違っているのか教えて頂きたいです。 下記が現在のスペックです。 OS:Windows バージョン 10 Eclipse 4.0 ※ソースコードは------で分けて今回はここに記載しています。 よろしくお願いいたします。 Connect13.java package jp.co.sss.dao; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jp.co.sss.dao.DBManager; @WebServlet("/connect13") public class Connect13 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; con = DBManager.getConnection(); if(con !=null){request.setAttribute("message","接続に成功しました。"); } DBManager.close(con); request.getRequestDispatcher("/jsp/sample13/pizza_result2.jsp").forward(request, response); } } ----------------------------------------------------------------------------------------------------------------------- DBManager.java package jp.co.sss.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DBManager { public static Connection getConnection(){ String url="jdbc:postgresql://localhost:5432/postgres"; String user = "postgres"; String password = "reds1113"; try{ Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url,user,password);////urlの指定のみ return con; }catch (Exception e){ throw new IllegalStateException(e); } } public static void close(Connection con){ if (con !=null){ try{ con.close(); }catch (SQLException e){ e.printStackTrace(); } } } public static void close(PreparedStatement ps, Connection con){ if (ps !=null) { try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } if (con != null){ try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } } } ----------------------------------------------------------------------------------------------------------------------- pizza_result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>シェアードピザ</title> </head> <body> <article class ="main"> <h2>${message}</h2> <form action="<%=request.getContextPath()%>/connect13"method="post"> <input type="submit" value="接続画面に戻る"/> </form> </article> </body> </html>

  • 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
  • HSQLDB のデータ更新エラー

    よろしくお願いします。 HSQLDB に繋がっているのですが、データを更新しようとしたら、エラーになります。 どうすればよいのかお教え下さい。 以下のPGを実行したら(smt=org.hsqldb.jdbc.jdbcStatement@*****)と表示されますが、 コメントアウトを外して実行したら、(TABLE not found in [UPDATE ACCOUNT])とエラーが出ます。 package appsample; import java.sql.Connection; import java.sql.Statement; public class UpdateSample { public static void main(String[] args) throws Exception { Connection con = DBManager.getConnection(); Statement smt = con.createStatement(); // int count = smt.executeUpdate("UPDATE ACCOUNT SET MONEY=5000"); // System.out.println("update count : " + count); System.out.println("smt=" + smt); smt.close(); con.close(); } } [環境]HSQLDB1.8.7 Eclipse3.2.1

  • MySQLへの接続なんですが・・。

    下記にあるJAVAのソースファイルがあるのですが、コンパイルしてクラスファイルをつくり、実行してもうまくいきません。 windows2000Professional, j2sdk1.4.0_01, MySQL3.23.47 // uc/BaseJdbc.java import java.sql.* ; public class BaseJdbc { public static void main(String[] args) { final String LINE = "---------------------------------------\n" ; try { Class.forName("org.gjt.mm.mysql.Driver") ; // JDBCドライバ登録 System.out.println("\n" + LINE + "MySQLのJDBCドライバを登録。") ; Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/river_data", "Administrator","lled") ; System.out.println("データベース「jdbc:mysql://localhost/" + "river_data」へ接続。") ; } } } 下記、コマンドプロンプトにて実行画面。 D:\azMySq\uc\BaseJdbc>java BaseJdbc --------------------------------------- MySQLのJDBCドライバを登録。 java.sql.SQLException: Invalid authorization specification: Access denied for us er: 'Administrator@localhost' (Using password: YES) at org.gjt.mm.mysql.MysqlIO.init(MysqlIO.java:330) at org.gjt.mm.mysql.Connection.connectionInit(Connection.java:261) at org.gjt.mm.mysql.jdbc2.Connection.connectionInit(Connection.java:89) at org.gjt.mm.mysql.Driver.connect(Driver.java:167) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at BaseJdbc.main(BaseJdbc.java:20)

  • パッケージ org.gjt.mm.mysqlは存在しません

    いつもお世話になっております。 javaから、sqlを操作するプログラムを作っているのですが、 コンパイル時に「パッケージ org.gjt.mm.mysqlは存在しません」と、 エラーが発生してしまいます。 ソースコード----------------------- import java.sql.*; import org.gjt.mm.mysql.Driver; public class HelloWorldJDBCMySQL { public static void main(String[] args) { String user = "password"; String pass = "password"; try { // ドライバクラスをロード // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // ODBCの場合 Class.forName("org.gjt.mm.mysql.Driver"); // MySQLの場合 // データベースへ接続 // Connection con = // DriverManager.getConnection("jdbc:odbc:helloworld"); // ODBCの場合 // MySQLの場合 String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url,user,pass); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM test"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); // 検索された行数分ループ while(rs.next()){ // nameを取得 String no = rs.getString("name"); // addressを取得 String lang = rs.getString("address"); // メッセージを取得 //String msg = rs.getString("MESSAGE"); // 表示 System.out.println(no + " " + lang ); } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } ----------------------------------- 環境変数--------------------------- CLASSPATH .;C:\sample4\WEB-INF\lib\mysql-connector-java-5.1.12-bin.jar ----------------------------------- どなたか、ご教授いただけますでしょうか?

    • ベストアンサー
    • Java
  • MySQL JDBC エラー

    以下のJDBCでのエラーに悩まされています。 ご教授お願いします。 import java.sql.*; public class RootingM { public static void main(String[] args) { System.out.println( \"=> loading driver:\" ); Class.forName(\"com.mysql.jdbc.Driver\"); System.out.println(\"Ok\"); System.out.println( \"=> connecting:\" ); Connection con = null; con = DriverManager.getConnection(url, user, pass); System.out.println(\"Ok\"); Statement stmt = con.createStatement(); ~~~ 以下省略 ~~~ 【DOS プロンプト】 => loading driver: OK => connecting: java.sql.SQLException: Communication link failure: java.io.IOException, underlyi ng cause: Unexpected end of input stream ** BEGIN NESTED EXCEPTION ** java.io.IOException MESSAGE: Unexpected end of input stream STACKTRACE: java.io.IOException: Unexp

    • ベストアンサー
    • 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
  • TomcatとPostgreSqlの接続について

    Tomcat4.0.4とApache1.3.26を使用しDBはPostgreSQLをつかっているのですが、DB接続がうまくいきません。 接続の際の記述は以下の通りです public void init(ServletConfig conf) throws ServletException { try{ Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost:8080:5432/test"; String user = "nakayama"; String pwd = "noah"; con = DriverManager.getConnection(url,user,pwd); }catch(Exception e){ err = err + "DataBase Connection err = " +e+"<br>"; } } これで実行すると、以下のエラーが出ます。 DataBase Connection err = Something unusual has occured to cause the driver to fail. Please report this exception: Exception: java.lang.NullPointerException Stack Trace: java.lang.NullPointerException at org.postgresql.Connection.openConnection(Connection.java:155) at org.postgresql.Driver.connect(Driver.java:149) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at toroku2.init(toroku2.java:24) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655) at ・・・・・ どうすれば解決できるのでしょうか? 教えてくださいm(__)m

    • ベストアンサー
    • Java
  • データ数をカウントしたいのですが

    JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは Connection con = null; String sql = "select count(*) from テーブル名"; // コネクションを作成する。 con = DriverManager.getConnection(url, user, pass); Statement st = con.createStatement(); // SQLを実行する。 ResultSet rs = st.executeQuery(sql); String count = rs.getString("count(*)"); 実行した結果上手く出来ないのですが、この部分での間違いはありますか?

    • ベストアンサー
    • Java

専門家に質問してみよう