
どうも、ブラザーと申します。
課題で検索フォームのソースコードを作っているのですが検索結果が反映されません。
ソースコードは以下の通りです。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import Bean.Bean;
import com.mysql.jdbc.StringUtils;
public class kadai7_database {
private static final String FIND_ALL_STMNT = "SELECT name, price FROM snack";
private static final String FIND_BY_LIKE_NAME_STMNT = "SELECT name, price FROM snack WHERE name LIKE ? ";
private DataSource source;
private ArrayList<Bean> Data;
public kadai7_database() throws SQLException {
source = DbManager.getSource();
}
public Map<String,Object> findByLikeName(String searchName, String searchKind) throws SQLException {
// 検索結果
Map<String,Object> result = null;
// DB接続
Connection con = source.getConnection();
// 検索条件を生成
String searchCond = setSearchCond(searchName,searchKind);
// SQL実行を実行し、取得情報をMapに設定
PreparedStatement pstmt = con.prepareStatement(FIND_BY_LIKE_NAME_STMNT);
pstmt.setString(1, searchCond);
ResultSet rs = pstmt.executeQuery();
setResultEntity(rs);
// DBクローズ
con.close();
return result;
}
private Map<String,Object> setResultEntity(ResultSet rs) throws SQLException{
Map<String,Object> resultMap = new HashMap<String,Object>();
List<Bean> DataList = new LinkedList<Bean>();
while (rs.next()) {
Bean Beans = new Bean();
Beans.setName(rs.getString("name"));
Beans.setPrice(rs.getString("price"));
DataList.add(Beans);
}
resultMap.put("count", String.valueOf(DataList.size()));
resultMap.put("lists", DataList);
return resultMap;
}
public ArrayList<Bean> getData() {;
return Data ;
}
public Object findAll() throws SQLException {
ArrayList<Bean> Data = null;
Statement stmt = null;
ResultSet rs = null;
Connection con = source.getConnection();
try {
stmt = con.createStatement();
rs = stmt.executeQuery(FIND_ALL_STMNT);
getData(rs);
} catch (SQLException se) {
se.printStackTrace();
}finally{
con.close();
stmt.close();
rs.close();
}
return Data;
}
private String setSearchCond(String searchName, String searchKind){
String searchCond = "";
if(!StringUtils.isEmptyOrWhitespaceOnly(searchKind)){
switch(Integer.valueOf(searchKind)){
case 1:
searchCond = searchName + "%";
break;
case 2:
searchCond = "%" + searchName + "%";
break;
case 3:
searchCond = "%" + searchName;
break;
default:
// 何もしない
}
}
return searchCond;
}
private ArrayList<Bean> getData(ResultSet rs) throws SQLException{
ArrayList<Bean> Data = new ArrayList<Bean>();
while (rs.next()) {
Bean bean = new Bean();
bean.setName(rs.getString("name"));
bean.setPrice(rs.getString("price"));
Data.add(bean); // Beanに格納
}
this.Data = Data;
return this.getData();
}
「findByLikeName」が検索フォームに使われておりここのresultに情報が入っていない事が原因だと思っているのですが何故結果が入ってこないのか分かりません。
またはそれ以外に原因があるのでしょうか。

No.1ベストアンサー
- 回答日時:
resultにnull以外の情報が一度も代入されていません
「findByLikeName」の
setResultEntity(rs);
と書いてある行を
result=setResultEntity(rs);
にすると値がresultに入り当初目的とした動作が行われるのではないでしようか
それ以外の数値を返すにしてもとにかく一度以上resultに値を代入しないとfindByLikeNameは結果を帰しません
No.2
- 回答日時:
長々とソースを載せるのは良いのですが、
テバッガで何処まで追ってみたんですか?
普通、データベース接続は正常ぽいとか、
カ―ソルが回ってないとか、いろいろ直ぐわかる
ことがあるはず。
eclipseとかで追えば、絞るのは簡単な
はずですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JTableでスクロールバーが表示...
-
どうしてもプログラムが動いて...
-
HTMLでのTableタグデータ取得方法
-
eclipseに記述したjavaファイル...
-
文字列を数式に
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
ループ処理の際、最後だけ","を...
-
System.err. printlnとSystem.o...
-
System.exit()の値を取得したい
-
動的配列が存在(要素が有る)か...
-
カタカナの小文字を大文字に変...
-
javaで質問です。 文字列2023/2...
-
1~100までの数字を表示したい
-
【C#】ハッシュテーブル(連想...
-
streamで送信されたArrayListを...
-
0dの意味を教えてください
-
VBAで配列の計算
-
[Ljava.lang.Stringってなんですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
Selenium IDEでexportしたコー...
-
javaでアプレットの描画が出来ない
-
データの外挿について
-
ActionForm form にnullが入っ...
-
(急募)一覧表画面でパスワード...
-
(急募)一覧画面表示がうまくい...
-
(急募)「.csv」ファイルをテー...
-
Java での グローバルIP取得
-
シャットダウンフックが呼ばれない
-
GridBagLayoutについての質問
-
文字列を数式に
-
生年月日と今日の日付から年齢...
-
JTableでスクロールバーが表示...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
JAVA 乱数で同じ数字を出さな...
おすすめ情報