質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

8207閲覧

Eclipseにpostgresqlを接続したいです

nose

総合スコア6

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/09/04 03:29

前提・実現したいこと

Eclipseとpostgresqlを接続したいのですが、なかなか接続できません。何度か試したところ、JDBCドライバの登録、URL、あたりが怪しいのですが自分でうまく修正して接続することができません。
構成はhtml,jsp,servlet,dao,beanを使って開発しています。
アドバイスいただけたら幸いです。よろしくお願いいたします。

InfoDAO.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.util.List; 8 9import la.bean.InfoBean; 10 11public class InfoDAO { 12 private Connection con; 13 14 public InfoDAO() throws DAOException { 15 getConnection(); 16 } 17 18 public List<InfoBean> findAll() throws DAOException { 19 if(con == null) 20 getConnection(); 21 PreparedStatement st = null; 22 ResultSet rs = null; 23 //SQL文の作成 24 try { 25 String sql = "SELECT * FROM emp"; 26 //prepareStatementオブジェクトの取得 27 st = con.prepareStatement(sql); 28 //SQLの実行 29 rs = st.executeQuery(); 30 //結果の取得および取得 31 List<InfoBean> list = new ArrayList<InfoBean>(); 32 while(rs.next()) { 33 int code = rs.getInt("code"); 34 String name = rs.getString("name"); 35 int age = rs.getInt("age"); 36 int tel = rs.getInt("tel"); 37 InfoBean bean = new InfoBean(code, name, age, tel); 38 list.add(bean); 39 } 40 //情報一覧をlistとして返す 41 return list; 42 }catch(Exception e) { 43 e.printStackTrace(); 44 throw new DAOException("レコードの取得に失敗しました"); 45 }finally { 46 try { 47 //リソースの開放 48 if(rs != null) rs.close(); 49 if(st != null) st.close(); 50 close(); 51 }catch(Exception e) { 52 throw new DAOException("リソースの開放に失敗しました"); 53 } 54 } 55 } 56 57 private void getConnection() throws DAOException{ 58 try { 59 //JDBCドライバの登録 60 Class.forName("org.postgresql.Driver"); 61 //URL、ユーザ名、パスワードの設定 62 String url ="jdbc:postgresql:PersonalData.sql"; 63 String user = "postgres"; 64 String pass = "himitu"; 65 //データベースの接続 66 con = DriverManager.getConnection(url, user, pass); 67 }catch (Exception e) { 68 throw new DAOException("接続に失敗しました"); 69 } 70 } 71 72 private void close() throws SQLException { 73 if(con != null) { 74 con.close(); 75 con = null; 76 } 77 } 78 79 80 81}

InfoBean.java

1 2package la.bean; 3 4import java.io.Serializable; 5 6public class InfoBean implements Serializable{ 7 private int code; 8 private String name; 9 private int age; 10 private int tel; 11 12 public InfoBean(int code, String name, int age, int tel) { 13 this.code = code; 14 this.name = name; 15 this.age = age; 16 this.tel = tel; 17 } 18 19 public InfoBean() { 20 21 // TODO 自動生成されたコンストラクター・スタブ 22 } 23 24 public int getCode() { 25 return code; 26 } 27 28 public void setCode(int code) { 29 this.code = code; 30 } 31 32 public String getName() { 33 return name; 34 } 35 36 public void setName(String name) { 37 this.name = name; 38 } 39 40 public int getAge() { 41 return age; 42 } 43 44 public void setAge(int age) { 45 this.age = age; 46 } 47 48 public int getTel() { 49 return tel; 50 } 51 52 public void setTel(int tel) { 53 this.tel = tel; 54 } 55 56 57 58 59 60}

showInfo.html

1 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8"> 6<title>Show All Info</title> 7</head> 8<body> 9 10<a href="/jmaster2/InfoServlet">個人情報表示</a> 11 12 13</body> 14</html>

showinfo.jsp

1 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 5<!DOCTYPE html> 6<html> 7<head> 8<meta charset="UTF-8"> 9<title>Show All emp</title> 10</head> 11<body> 12<table border="1"> 13<tr><td>NO</td><td>名前</td><td>年齢</td><td>電話</td></tr> 14<c:forEach items="${infos}" var="info"> 15 <tr><td>${info.code}</td><td>${info.name}</td><td>${info.age}</td><td>${info.tel}</td></tr> 16</c:forEach> 17 18</body> 19</html> 20

PersonalData.sql

1DROP DATABASE IF EXISTS OSSDB_scripts_SJIS; 2CREATE DATABASE OSSDB_scripts_SJIS; 3DROP USER IF EXISTS student; 4CREATE USER student WITH PASSWORD 'himitu'; 5 6DROP TABLE IF EXISTS emp; 7 8CREATE TABLE emp ( 9 code INTEGER PRIMARY KEY, 10 name TEXT, 11 age INTEGER, 12 tel TEXT 13); 14 15INSERT INTO emp VALUES(1, '鈴木', 30,'03-1111-1111'); 16INSERT INTO emp VALUES(2, '山田', 28,'03-1441-1111'); 17INSERT INTO emp VALUES(3, '田中', 69,'03-1771-1111'); 18INSERT INTO emp VALUES(4, '涌井', 70,'03-1324-1111');

試したこと

urlを心当たりのあるものに変更したのですがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

powershellでファイルはインストールできました。写真で掲載させていただきます。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/04 03:32

Eclipseはあくまでツールです。 EclipseからDBを見たいのならそういうプラグインもありますが、内容的にそうではないですよね。表現は正しく記載してください。
guest

回答1

0

ベストアンサー

PostgreSQLの場合、データベース接続U\RLは以下です。

java

1jdbc:postgresql://{host}:{port}/{database}

ポート番号が5432の場合は省略できます。
例えばローカルPCにて起動しているPostgreSQLへ接続する場合は、

java

1jdbc:postgresql://localhost

です。

なおWebアプリケーションからデータベースへ接続する場合は、JDBCドライバをWEB-INF/libの中へ配置してから、サーバを起動してください。

投稿2020/09/04 03:41

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nose

2020/09/04 04:00

アドバイスありがとうございます。jdbc:postgresql://localhostの//localhostに何を入力すればよいのでしょうか? JDBCドライバをWEB-INF/libの中へ配置をしており(postgresql-42.1.4.jar)、Tomcat9.0のサーバーを使っています。 初学者のため、言葉にかなり語弊があるかとおもいます。わかりにくく、大変申し訳ございません。
nose

2020/09/04 04:47

返信していただきありがとうございます。localhostは自分のパソコンのことであることは理解しているのですが、jdbc:postgresql:localhostやDBファイルに書いてあるDROP DATABASE IF EXISTS OSSDB_scripts_SJISからかなと思い、jdbc:postgresql:OSSDB_scripts_SJISとurlに設定してもうまくいきませんでした。
A-pZ

2020/09/04 05:25

"うまくいかない"の詳細が知りたいので、エラー時のスタックトレースが出ているかと思いますが、その内容を「質問を更新して記載してください。
nose

2020/09/04 05:41

重複返信になってしまい申し訳ありません。コメントありがとうございます。スタックトレースと思われるものを記載させていただきます。よろしくお願いいたします。 at la.dao.InfoDAO.getConnection(InfoDAO.java:70) at la.dao.InfoDAO.<init>(InfoDAO.java:17) at la.servlet.InfoServlet.doGet(InfoServlet.java:40) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:832)
A-pZ

2020/09/04 06:32

色々注文が増えて申し訳ありませんが、おそらくgetConnectionの箇所でエラーなのだと思われますが、例外の原因が消えてしまうよろしくない実装のため、以下のように書き換えたうえで、スタックトレースの内容を「質問を編集して」貼っていただけますか。よろしくお願いします。 private void getConnection() throws DAOException{ try { //JDBCドライバの登録 Class.forName("org.postgresql.Driver"); //URL、ユーザ名、パスワードの設定 String url ="jdbc:postgresql:PersonalData.sql"; String user = "postgres"; String pass = "himitu"; //データベースの接続 con = DriverManager.getConnection(url, user, pass); }catch (Exception e) { throw new DAOException("接続に失敗しました", e); } } もし、throw new DAOException("接続に失敗しました", e); でコンパイルエラーが出た場合は、 e.printStackTrace(); throw new DAOException("接続に失敗しました"); でも構いません。
nose

2020/09/04 07:21

コードを確認したところ、servletのRequestDispatcher rd = request.getRequestDispatcherから送るjspのファイル名のスペルミスという単純なミスであることがわかりり、修正後コンパイル成功しました! 初学者の私に丁寧にアドバイスしてくださり本当にありがとうございました!アドバイスしてくださったからこそなんとかあきらめずに粘れました、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問