javaのServiceクラスでDAOクラスを呼びたいのですが、
うまくインスタンス化できません。。。
Serviceクラスの**dao.findByCondition();**でエラーが出ます。
エラー文 → 「型 ItemDAO のメソッド findByCondition(String, int) は引数 () に適用できません」
引数に型や引数名を入力してみても解決できませんでした。
わかる方がいらっしゃいましたらお力添えお願い致します。。
Java
1import java.sql.Connection; 2import java.sql.PreparedStatement; 3import java.sql.ResultSet; 4import java.sql.SQLException; 5import java.util.ArrayList; 6import java.util.List; 7 8import jp.nib.ict21.ecsite.data.Item; 9 10public class ItemDAO extends CommonDAO { 11 //商品検索処理を行うクラス 12 13 public List<Item> findByCondition(String keyword, int categoryId) throws SQLException{ 14 //エラーを説明する文字列(SQLException)をスルーする 15 16 List<Item> itemsList = new ArrayList<>(); 17 //インスタンス化 18 19 String sql = 20 "SELECT " 21 + "item_Id," 22 + "name," 23 + "manufacturer," 24 + "category_Id," 25 + "color," 26 + "price," 27 + "stock," 28 + "recommended " 29 + "FROM " 30 + "public.items " 31 + "WHERE " 32 + "name LIKE '%?%' " 33 + "AND category_Id = ?"; 34 35 /* 商品Id 36 * 商品名 37 * 製造会社 38 * カテゴリId 39 * 色 40 * 価格 41 * 在庫数 42 * オススメ 43 * public.itemsテーブルの 44 * カテゴリによる*/ 45 46 Connection con = connect(); 47 //CommonDAOから接続するメソッドを継承 48 49 try(PreparedStatement ps = con.prepareStatement(sql)){ 50 //SQLを実行するための準備 51 52 ps.setString(1, keyword); 53 ps.setInt(2, categoryId); 54 //プレースホルダーに値をセット 55 56 57 ResultSet rs = ps.executeQuery(); 58 //SQLを実行 59 60 61 while(rs.next() == true) { 62 //データベースを繰り返し処理で検索する 63 64 Item item = new Item(); 65 //Itemをインスタンス化 66 67 item.setItem_Id(rs.getInt("item_id")); 68 item.setName(rs.getString("name")); 69 item.setManufacturer(rs.getString("manufacturer")); 70 item.setCategory_Id(rs.getInt("category_Id")); 71 item.setColor(rs.getString("color")); 72 item.setStock(rs.getInt("stock")); 73 item.setRecommended(rs.getBoolean("recommended")); 74 //各リストのResultSetをgetterで取得して、itemのリストにsetterでセット 75 76 switch(rs.getInt("category_Id")) { 77 //カテゴリ別に結果を変える処理 78 79 case 1: 80 //帽子の時 81 itemsList.add(item); 82 break; 83 case 2: 84 //鞄の時 85 itemsList.add(item); 86 break; 87 default: 88 //全て(未選択)の時 89 itemsList.add(item); 90 /*各アイテムをリストにまとめて、 91 * addでAllayListに追加*/ 92 } 93 } 94 }catch(SQLException e) { 95 e.printStackTrace(); 96 /*tryで実行できなかった場合、 97 * エラー説明文をキャッチする*/ 98 } 99 100 return itemsList; 101 //try処理の結果をitemsListインスタンスに戻して格納 102 103 } 104}
Java
1import java.util.List; 2 3import javax.servlet.http.HttpServletRequest; 4 5import jp.nib.ict21.ecsite.dao.ItemDAO; 6import jp.nib.ict21.ecsite.data.Item; 7 8public class SearchService { 9 10 public static List<Item> findByCondition(HttpServletRequest request) throws SQLException{ 11 12 ItemDAO dao = new ItemDAO(); 13 List<Item> itemList = dao.findByCondition(); 14 15 return itemList; 16 17 } 18}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。