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

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

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

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

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

Eclipse

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

Q&A

解決済

1回答

1457閲覧

jspファイルからデータベースに接続したあと、SQL文の実行をした際にエラーが生じる

soredekimarija

総合スコア3

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

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

Eclipse

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

0グッド

0クリップ

投稿2021/05/17 09:17

編集2021/05/17 09:59

前提・実現したいこと

教材を用いて、jspファイルからデータベース接続、データのやり取りを行うプログラムを作成したのですが、DB接続まではうまくいくのですが、

ResultSet result = state.executeQuery

の文で必ずエラーが発生してしまいます。
誤入力などもないように思えるのですが、なぜこれが出てしまうのかわからない状況です。。

誰かご助言願えないでしょうか。
お手数をおかけしますが、よろしくお願いします。

発生している問題・エラーメッセージ

※エラー該当部分のstate.executeQuery以降のSQL文を変更しても
同じエラーが出てきてしまいます。。

該当DBはEclipseからは切断しているのですが、
それでもエラーは消えてくれない状況です。

HTTPステータス 500 - Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request. 例外 org.apache.jasper.JasperException: An exception occurred processing JSP page /sampleJSP.jsp at line 14 9: Connection users = DriverManager.getConnection 10: ("jdbc:derby:¥Users¥yu¥MyDB;create=true"); 11: Statement state = users.createStatement(); 12: //ResultSet result = state.executeQuery 13: // ("create table Users (id varchar(20) primary key, password varchar(20))"); 14: ResultSet result = state.executeQuery("SELECT * FROM Users"); 15: String html = "<table border=\"1\">";

イメージ説明

該当のソースコード

// sampleJSP.jsp <%-- pageディレクティブで言語、キャラクタセット、コンテンツの種類を設定--%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*"%> <% Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); Connection users = DriverManager.getConnection ("jdbc:derby:¥Users¥yu¥MyDB;create=true"); Statement state = users.createStatement(); //ResultSet result = state.executeQuery // ("create table Users (id varchar(20) primary key, password varchar(20))"); ResultSet result = state.executeQuery("SELECT * FROM Users"); String html = "<table border=\"1\">"; html += "<tr><td>ID</td><td>パスワード</td></tr>"; /*while (result.next()) { String id = result.getString("id"); String pass = result.getString("password"); html += "<tr><td>" + id + "</td>"; html += "<td>" + pass + "</td></tr>"; }*/ html += "</table>"; result.close(); state.close(); users.close(); %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset="utf-8"> <title>Database Access</title> <style> h1 { font-size: 14pt; font-weight:bold; background-color:#DDF; padding:3px; } </style> </head> <body> <h1>データベースにアクセス</h1> <h2>データの一覧</h2> <%=html %>> <hr> <h2>ユーザの追加</h2> <form action="./AddUser" method="POST"> <table> <tr> <td>ログイン</td> <td><input type="text" name="id"></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="pass"></td> </tr> <tr> <td></td> <td><input type="submit" value="送信"></td> </tr> </table> </form> <hr> <h2>ユーザの削除</h2> <form action="./DelUser" method="POST"> <table> <tr> <td>ログイン</td> <td><input type="text" name="id"></td> </tr> <tr> <td></td> <td><input type="submit" name="送信"></td> </tr> </table> </form> </body> </html>

試したこと

・該当SQL文の内容をCREATE文などに変更
・データベースのEclipseからの接続、切断をした状況でそれぞれ確認

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

Eclipse IDE 2020-12
Tomcat v8.0 サーバー

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

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

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

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

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

m.ts10806

2021/05/17 09:54

>該当DBはEclipseからは切断しているのですが、 とはいってもアプリケーション実行時に繋ぎに行くのでDBViewerとは関連ないですよ。 ただ、Eclipseならエラーハンドリングを入れるように警告がでるんではないかと思いますが。 ただ。if not existsもなしにcreateだとalready existsのエラーが出るのでは。 まずはエラーハンドリングしてください。
soredekimarija

2021/05/17 09:59

@xebme様 @dodox86様 @m.ts10806様 コメントいただきありがとうございます! CREATE文に関しておかしいというご指摘をいただきましたため、一番最初にエラーが出た状態に本文のプログラム内容を修正しました。 元はCREATE文の書かれていた部分にSELECT文が入っており、その状態でも同じエラーが出てしまう状況です、、
m.ts10806

2021/05/17 10:01

エラーハンドリングしてください。 try{ }catch(Exception e){ e.printStackTrace(); } むしろ画面ではなくコンソールには詳細エラー出てるのでは。
soredekimarija

2021/05/17 10:20

@m.ts10806様 すみません、コンソール部分にエラー内容書いてあって、 テーブル「Users」が存在していないとのことでした。。 該当エラーのSELECT文の上にCREATE文を追加し、テーブルを作成することでエラー解消されました。 すみません、、見落としてしまってて、 ありがとうございます!
guest

回答1

0

自己解決

すみません、コンソール部分にエラー内容書いてあって、
テーブル「Users」が存在していないとのことでした。。

該当エラー部分の一行上に

state.execute("create table Users (id varchar(20) primary key, password varchar(20))");

を追加し、テーブルを作成することでエラー解消されました。

すみません、、見落としてしまってて、
お手数おかけしてすみません、ありがとうございました!

投稿2021/05/17 10:19

soredekimarija

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問