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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

4458閲覧

データベースから上手くデータが取れない

kokok

総合スコア145

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2019/09/05 02:16

編集2019/09/05 02:36

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>ホーム</title> 8</head> 9<body> 10<form action="/webkensyu/Address" method="get"> 11<button type="submit" name="button1">住所一覧</button> 12</form> 13</body> 14</html>

java

1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import dao.ADDR_DB; 14 15/** 16 * Servlet implementation class Address 17 */ 18@WebServlet("/Address") 19public class Address extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 /** 23 * @see HttpServlet#HttpServlet() 24 */ 25 public Address() { 26 super(); 27 // TODO Auto-generated constructor stub 28 } 29 30 /** 31 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 32 */ 33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 // TODO Auto-generated method stub 35 //response.getWriter().append("Served at: ").append(request.getContextPath()); 36 37 request.setCharacterEncoding("UTF-8"); 38 ADDR_DB addrdb = new ADDR_DB(); 39 ArrayList<String> result = addrdb.getaddrss(); 40 request.setAttribute("result", result); 41 RequestDispatcher dispatcher = request.getRequestDispatcher("/address_view.jsp"); 42 dispatcher.forward(request, response); 43 } 44 45 /** 46 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 47 */ 48 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 49 // TODO Auto-generated method stub 50 doGet(request, response); 51 } 52 53}

java

1package dao; 2 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.util.ArrayList; 7 8public class ADDR_DB extends DBIO{ 9 10 public ADDR_DB(){ 11 connect(); 12 } 13 14 15 16 //住所一覧取得する 17 public ArrayList<String> getaddrss() { 18 ArrayList<String> result = new ArrayList<String>(); 19 try { 20 21 connect(); 22 23 String sql ="SELECT addrss_code FROM addresses"; 24 25 PreparedStatement pstmt = conn.prepareStatement(sql); 26 ResultSet rs = pstmt.executeQuery(); 27 28 while(rs.next()) { 29 30 result.add(rs.getString("address_code")); 31 //result.add(rs.getString("address")); 32 } 33 34 }catch(SQLException e){ 35 36 e.printStackTrace(); 37 38 }finally { 39 40 this.close(); 41 } 42 return result; 43 } 44} 45

java

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10public class DBIO { 11 12 protected static final String DBNAME = "jdbc:mysql://localhost:3306/webkensyu?useUnicode =true&characterEncoding=utf8"; 13 protected static final String DBUSER = "user"; 14 protected static final String DBPASS = "pass"; 15 protected Connection conn; 16 17 18 public DBIO(){ 19 this.connect(); 20} 21 22 public void connect() { 23 try { 24 25 Class.forName("com.mysql.jdbc.Driver"); 26 27 conn = DriverManager.getConnection(DBNAME,DBUSER,DBPASS); 28 29 30 } catch(SQLException e) { 31 32 e.printStackTrace(); 33 34 }catch(ClassNotFoundException e) { 35 36 e.printStackTrace(); 37 38 } 39 } 40 41 42 43 public void close() { 44 45 if(conn != null) { 46 try { 47 conn.close(); 48 }catch(SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53}
//住所一覧取得する public ArrayList<String> getaddrss() {

ResultSet rs = pstmt.executeQuery();

上記のコードでエラーが出てしまいます

ArrayList<String> result = addrdb.getaddrss();

メソッドの呼び出し側でもエラーが出てしまいます。

jspの住所取得ボタンを押したら   Address サーブレットでADDR_DBを呼び出しデータベースから住所を取得し結果を address_view.jspに渡したいと考えております。

解決出来なかったのでアドバイスお願いします。

--追記部分--

at dao.ADDR_DB.getaddrss(ADDR_DB.java:26)
at servlet.Address.doGet(Address.java:39)
この辺でエラーが出ていると思い
executeQuery();や その周辺のメソッドの使い方や戻り値などについて調べてみましたが、解決できませんでした。

エラーメッセージは1000文字を超えるため 質問の追記のところに貼り付けます。

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

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

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

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

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

m.ts10806

2019/09/05 02:26

エラーとはなんでしょうか。そのままコピペしてください。 またそのエラーについて調べたことや試したことがあればそれも追記してください
tetutetu

2019/09/05 02:36

>エラーメッセージは1000文字を超えるため 質問の依頼のところに貼り付けます。 要点を掴めるようにしましょう ・○○Exceptionが ・どこで発生しているか の最低2行で済みます。
m.ts10806

2019/09/05 02:38

>エラーメッセージは1000文字を超えるため 質問は10000字まで投稿できます。
m.ts10806

2019/09/05 02:39 編集

あとDBのテーブル定義もご提示ください。多分それ見せてもらうだけで解決できる内容です。
kokok

2019/09/05 02:47

CREATE TABLE webkensyu.addresses ( address_id INT NOT NULL, address_code CHAR(8) NOT NULL, address_prefecture VARCHAR(4) NOT NULL, address_city VARCHAR(10) NOT NULL, address_street VARCHAR(255), CONSTRAINT PRIMARY KEY (address_id) ); です。 カラム名のミスでした。
m.ts10806

2019/09/05 02:48

設定に準ずるものはコピペが原則です。たとえどんな簡単な単語でも。 プログラム言語側からするとそういう文字列の集合体でしかないということです。
kokok

2019/09/05 03:01

ありがとうございます。 今後は、コピペするようにします。
guest

回答1

0

ベストアンサー

昨日もお伝えしましたが
「何のエラーを吐いているか」を読む、伝えることができるようにしてください。

String sql ="SELECT addrss_code FROM addresses"; (略) while(rs.next()) { result.add(rs.getString("address_code")); //result.add(rs.getString("address")); }

まず一つ分かることは、SQL文のカラム名と取得しようとしているカラム名が一致していません。

public ArrayList<String> getaddrss() {

メソッド名もまた然りです。
スペル的に合ってるのはAddressですが、カラム名がどちらになっているかは回答者から確認できません。
まずは落ち着いて確認されては如何でしょうか。

投稿2019/09/05 02:32

編集2019/09/05 02:35
tetutetu

総合スコア419

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

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

kokok

2019/09/05 02:43

情報: Server version: Apache Tomcat/7.0.88 [木 9 05 11:42:01 JST 2019] 情報: Server built: May 7 2018 11:12:57 UTC [木 9 05 11:42:01 JST 2019] 情報: Server number: 7.0.88.0 [木 9 05 11:42:01 JST 2019] 情報: OS Name: Windows 8.1 [木 9 05 11:42:01 JST 2019] 情報: OS Version: 6.3 [木 9 05 11:42:01 JST 2019] 情報: Architecture: amd64 [木 9 05 11:42:01 JST 2019] 情報: Java Home: C:\pleiades\java\7\jre [木 9 05 11:42:01 JST 2019] 情報: JVM Version: 1.7.0_80-b15 [木 9 05 11:42:01 JST 2019] 情報: JVM Vendor: Oracle Corporation [木 9 05 11:42:01 JST 2019] 情報: CATALINA_BASE: C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 [木 9 05 11:42:01 JST 2019] 情報: CATALINA_HOME: C:\pleiades\tomcat\7 [木 9 05 11:42:01 JST 2019] 情報: Command line argument: -Dcatalina.base=C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 [木 9 05 11:42:01 JST 2019] 情報: Command line argument: -Dcatalina.home=C:\pleiades\tomcat\7 [木 9 05 11:42:01 JST 2019] 情報: Command line argument: -Dwtp.deploy=C:\pleiades\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps [木 9 05 11:42:01 JST 2019] 情報: Command line argument: -Djava.endorsed.dirs=C:\pleiades\tomcat\7\endorsed [木 9 05 11:42:01 JST 2019] 情報: Command line argument: -Dfile.encoding=UTF-8 [木 9 05 11:42:01 JST 2019] 情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\pleiades\java\7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/pleiades/eclipse/jre/bin/../jre/bin/server;C:/pleiades/eclipse/jre/bin/../jre/bin;C:/pleiades/eclipse/jre/bin/../jre/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\skoga\Program Files (x86)\VMware\VMware vSphere CLI\Perl\site\bin;C:\skoga\Program Files (x86)\VMware\VMware vSphere CLI\Perl\bin;c:\Program Files (x86)\Intel\iCLS Client\;c:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Java\jre7\bin;C:\php;C:\Program Files\MySQL\MySQL Server 5.7\bin;c:\Program Files\Intel\WiFi\bin\;c:\Program Files\Common Files\Intel\WirelessCommon\;C:\WINDOWS\System32\OpenSSH\;C:\MinGW\bin;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Users\admin\source\repos\bin_change_srecord\Debug;C:\pleiades\eclipse;;. [木 9 05 11:42:01 JST 2019] 情報: Initializing ProtocolHandler ["http-bio-8080"] [木 9 05 11:42:01 JST 2019] 情報: Initializing ProtocolHandler ["ajp-bio-8009"] [木 9 05 11:42:01 JST 2019] 情報: Initialization processed in 795 ms [木 9 05 11:42:01 JST 2019] 情報: サービス Catalina を起動します [木 9 05 11:42:02 JST 2019] 情報: Starting Servlet Engine: Apache Tomcat/7.0.88 [木 9 05 11:42:02 JST 2019] 情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [木 9 05 11:42:04 JST 2019] 警告: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [111] milliseconds. [木 9 05 11:42:04 JST 2019] 情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [木 9 05 11:42:05 JST 2019] 情報: Starting ProtocolHandler ["http-bio-8080"] [木 9 05 11:42:05 JST 2019] 情報: Starting ProtocolHandler ["ajp-bio-8009"] [木 9 05 11:42:06 JST 2019] 情報: Server startup in 4021 ms [木 9 05 11:42:06 JST 2019] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'addess_code' in 'field list' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011) at dao.ADDR_DB.getaddrss(ADDR_DB.java:26) at servlet.Address.doGet(Address.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1139) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
kokok

2019/09/05 02:44

どこのエラーが重要なのかがあまり理解できておりません。 アドバイス頂けないでしょうか?
kokok

2019/09/05 02:45

あ、エラーは、カラム名の間違えを修正したところデータベースからデータを取れました
tetutetu

2019/09/05 02:45

まあ、思った通りの場所でしたね。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'addess_code' in 'field list' 'addess_code' なんてカラム名は存在しませんよ。 というSQL構文エラーになります
tetutetu

2019/09/05 02:47

>どこのエラーが重要なのか e.printStackTrace(); でエラー文を出力するので ○○Exception : 理由 という形で出力されている場所があります(上述)
tetutetu

2019/09/05 02:50

eclipseなら(というか大体何でもできるんじゃないかと思いますけど) コンソール画面をクリアすることができるので エラーを吐く前に一度コンソールをクリアした方が見やすいですね。 その場合上記のエラー文が一番上に出るかと。
tetutetu

2019/09/05 02:52

>m.ts10806さん 補足ありがとうございます。 とりあえず 「どこで」 「何の」エラーがで出ているか分かるだけでも対処にかかる時間が全然変わってきます。 というか、それが分からないと修正のしようがないです。
kokok

2019/09/05 03:00

色々アドバイスありがとうございます。 コンソールのクリアをしたところ一番上に com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException が出てきて分かりやすくなりました。 エラーメッセージをしっかり読めるようにしていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問