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

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

ただいまの
回答率

90.22%

SQLExceptionエラー

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,686

iyumoyumo

score 16

javaの初心者です。
下記のFindServlet.javaでSQLExceptionとなり先に進めません。
エラーは500java.lang.Error: Unresolved compilation problem: 
処理されない例外の型 SQLException となります。
どなたかご教授いただけないでしょうか?

使用環境 Eclipse
Tomcat6.0
mysql
jre1.8.0_45

中身
DB    jsp10
table    schedule
カラム sid    int(11) primary key
title   varchar(100)
sdate  date
stime  time
memo text
データ 1,本のタイトル,2016-07-20,10:00:00,購入
2,ノートのタイトル,2016-07-16,12:15:00,返却
ファイル
DbConnection.java
Data.java
DataList.java
SearchServlet.java
やりたいこと
DbConnectionで接続設定
Data.javaでセッターとゲッターの定義
DataListでテーブルから取得したデータを
Data.javaにセット
SearchServlet.javaでDatajavaからデータを
取得して表示
Q SearchServlet.javaの
ArrayList<Data> list =DataList.getList();の行が
処理できない例外の方SQLException
となり進みません。

//Dbconnection.java
package search;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;

public class DbConnection{
public static Connection getConnection() throws SQLException{
String strConn="jdbc:mysql://localhost/jsp10"+"?user=root&password=root"+"&characterEncoding=utf8";
Connection conn=DriverManager.getConnection(strConn);
return conn;
}
}
//Data.java
package search;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Data{
int lId;
String lTitle="";
String lDate="";
String lTime="";
String lMemo="";
public int getlId() {
return lId;
}
public void setlId(int lId) {
this.lId = lId;
}
public String getlTitle() {
return lTitle;
}
public void setlTitle(String lTitle) {
this.lTitle = lTitle;
}
public String getlDate() {
return lDate;
}
public void setlDate(String lDate) {
this.lDate = lDate;
}
public String getlTime() {
return lTime;
}
public void setlTime(String lTime) {
this.lTime = lTime;
}
public String getlMemo() {
return lMemo;
}
public void setlMemo(String lMemo) {
this.lMemo = lMemo;
}
}
//DataList.java
package search;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class DataList{
static public ArrayList<Data>getList() throws SQLException{
ArrayList<Data> list=new ArrayList<Data>();
Connection mConn=DbConnection.getConnection();
Statement mStmt=mConn.createStatement();
String mSql="select * from schedule";
ResultSet mRs=mStmt.executeQuery(mSql);
try{
while(mRs.next()){
Data bData=new Data();
bData.setlId(mRs.getInt("sid"));
bData.setlTitle(mRs.getString("title"));
bData.setlDate(mRs.getString("sdate"));
bData.setlTime(mRs.getString("stime"));
bData.setlMemo(mRs.getString("memo"));
list.add(bData);
}
}catch(SQLException e){
e.printStackTrace();
}     
mRs.close();
mStmt.close();
mConn.close();
return list; 
}
}
//FindServlet.java
package search;
import java.io.IOException;
import java.io.PrintWriter;
//import java.sql.Connection;
//import java.sql.ResultSet;
import java.sql.SQLException;
//import java.sql.Statement;
import java.util.ArrayList;
//import serach.Data;
//import search.DataList;
//import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FindServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public SearchServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=Windows-31J");
PrintWriter out=response.getWriter();
out.println("<html><head>");
out.println("<title>スケジュール</title>");
out.println("</head><body>");
out.println("<h1 style='background:#cccccc'>スケジュール帳</h1>");
out.println("<table border='1'>");
out.println("<tr>");
out.println("<th>日付</th><th>時刻</th><th>予定表</th><th>備考</th><th>削除</th>");
out.println("</tr>");
for(Data bData:DataList.getList()){
out.println("<tr>");
out.println("<td>");
out.println("<%=bData.getlId()%>");
out.println("</td>"); 
out.println("<td>");
out.println("<%=bData.getlTitle()%>"); 
out.println("</td>");
out.println("<td>");
out.println("<%=bData.getlDate()%>"); 
out.println("</td>");
out.println("<td>");
out.println("<%=bData.getlTime()%>");
out.println("</td>");
out.println("<td>");
out.println("<%=bData.getlMemo()%>"); 
out.println("</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
}      

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

0

Unresolved compilation problem:の意味は調べましたか?
その次の行に、どのソースの何行目かが書いてあると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/30 12:45

    すみません。Unresolived compilation problemを調べましたがよく分かりませんでした。
    因みにその次の行には
    処理されない例外の型 SQLException

    search.FindServlet.doGet(FindServlet.java:37)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    と出ます。SQL側の問題でしょうか?

    キャンセル

0

Unresolivedではなく、Unresolvedです。未定義という意味です。
search.FindServlet.doGet(FindServlet.java:37)は
FindServlet.javaの37行目でエラーになっているという意味です。
その周辺で定義忘れはありませんか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

コンパイルエラーが発生しています。
FindServletからDataList.getList()を呼び出していますが、このgetListメソッドはSQLExceptionをスローすると宣言しています。サーブレットの継承メソッドはこれを扱えないので、try節で囲み、例えばthrow new ServletException(e)などで発生したSQLExceptionをラップするのが良いでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる