どうも、ブラザーと申します。
課題で検索フォームのソースコードを作っているのですが検索結果が反映されません。
ソースコードは以下の通りです。
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で質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java final 1 2022/06/10 22:49
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
【JAVAエラー】互換性のない型...
-
【Objective-C】プロパテイにつ...
-
javaで画像を回転縮小
-
import文はルートクラス指定と...
-
アプレットのコード変更後の反...
-
javaプログラムの問題です
-
干支の計算で。。。
-
C# 半角カナの文字化けについて
-
Javaで文字と数字が混ざったも...
-
ハートマークを表示するには?
-
0~9まで入力させ、前に入力さ...
-
System.out.printlnの出力先
-
配列への文字列の格納について
-
C言語のポインターに関する警告
-
JSPでDBからデータ読み込みブラ...
-
パソコンキーボードで時分秒を...
-
nullcline
-
エクセルの配列定数について教...
-
JAVAで素数判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
importするには java.io.*; imp...
-
Javaを使ってデジタル時計を作...
-
setAttribute(String, int)は適...
-
シャットダウンフックが呼ばれない
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
ColabでのPytorchのエラー
-
【JAVAエラー】互換性のない型...
-
文字列を数式に
-
importとextendsの用い方の違い...
-
ActionForm form にnullが入っ...
-
Java3Dで横置き円筒体の円筒中...
-
HttpClientについて
-
画面遷移時のデータ遷移について
-
java初心者です。座標取得と図...
-
生年月日と今日の日付から年齢...
-
javaで画像を回転縮小
おすすめ情報