前提・実現したいこと
下記のコードの中央辺りに
String sql = "SELECT * from search_gaityu WHERE stock ILIKE ?";
とあると思うのですが
以前作った検索システムでは一つのKEYで検索出来ればよかったのですが
今回はcustomer,pname,parts,parts2,stockの5つをKEYに検索したいのですが
どれだけ調べても解決できる方法が見つかりませんでした。
ご教授宜しくお願い致します。
完成イメージ
例えばここに
取引先 製品名 部品名 部品名2 部品コード 仕入値 備考
神澤工業所 RB441T(CE) ツメベース RB12625 5.00
という1行があったときにHTMLの検索フォームから
神澤工業所と入力してもRB441T(CE)と入力しても
何れの値で検索をかけても上記の様に表示されるようにしたいと思っています。
該当のソースコード
JSP
1<%@page import="java.util.*"%> 2<%@page import="java.sql.*"%> 3 4<%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7<html> 8<head> 9<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 11<title>PostgreSQL server connection test</title> 12</head> 13<body> 14 15 16<% 17 //変数定義 18 Connection conn = null; 19 PreparedStatement ps = null; 20 ResultSet rs = null; 21 22 try { 23 24 String dbURL = "jdbc:postgresql://localhost:5432/testdb"; 25 String user = "postgres"; 26 String pass = "takahashi"; 27 String key = "%"; 28 29 if(request.getParameter("key") != null) { 30 if(request.getParameter("key") != "") { 31 key = request.getParameter("key") + "%"; 32 } 33 } 34 35 System.out.println("*** key = " + key); 36 37 conn = DriverManager.getConnection(dbURL, user, pass); 38 39 40 String sql = "SELECT * from search_gaityu WHERE stock ILIKE ?"; 41 42 ps = conn.prepareStatement(sql); 43 key = key.replace("*", "%"); 44 ps.setString(1, key); 45 46 47 48 //SELECTを実行する 49 rs = ps.executeQuery(); 50 51 //取得した結果を全件出力する 52 //out.println("<div class="table-scroll">"); 53 out.println("<table>"); 54 out.println("<tr><th>取引先</th><th>製品名</th><th>部品名</th><th>部品名2</th><th>部品コード</th><th>仕入値</th><th>仕入値2</th</tr>"); 55 while(rs.next()){ 56 out.println("<tr>"); 57 out.print("<td>" + rs.getString("customer") + "</td>"); 58 out.print("<td>" + rs.getString("pname") + "</td>"); 59 out.print("<td>" + rs.getString("parts") + "</td>"); 60 out.print("<td>" + rs.getString("parts2") + "</td>"); 61 out.print("<td>" + rs.getString("stock") + "</td>"); 62 out.print("<td>" + rs.getString("other") + "</td>"); 63 out.print("<td>" + rs.getString("other2") + "</td>"); 64 out.println("</tr>"); 65 } 66 out.println("</table>"); 67 //out.println("</div>"); 68 69 } catch (SQLException ex) { 70 ex.printStackTrace(); 71 } finally { 72 try { 73 if (conn != null && !conn.isClosed()) { 74 conn.close(); 75 } 76 } catch (SQLException ex) { 77 ex.printStackTrace(); 78 } 79 } 80%> 81</body> 82</html> 83
補足情報(FW/ツールのバージョンなど)
必要ではないかとは思いますがHTMLのソースもあげておきます。
HTML
1<html> 2 <head> 3 <title>型棚検索</title> 4 5 </head> 6 <body> 7 <h1 id="heading">外注費検索</h1> 8 <div id="center-block"> 9 <form id="form" action="/Gaityu/jsp/search_gaityu.jsp" method="post" name="form" onSubmit="return check()"> 10 <input id="sbox" type="text" name="key" placeholder="検索ワードを入力して下さい" onblur="toHalfWidth(this)"/><input id="sbtn" type="submit" value="検索"> 11 </form> 12 </div> 13 <script> 14 function toHalfWidth(elm) { 15 elm.value = elm.value.replace(/[A-Za-z0-9!-~]/g, function(s){ 16 return String.fromCharCode(s.charCodeAt(0)-0xFEE0); 17 }); 18 } 19 /* 20 function check(){ 21 22 var flag = 0; 23 24 if(document.form.key.value == ""){ 25 flag = 1; 26 } 27 28 if(flag){ 29 window.alert('部品コードを入力して下さい'); 30 return false; // 送信を中止 31 } 32 else{ 33 return true; // 送信を実行 34 } 35 }*/ 36 </script> 37 </body> 38</html> 39 40 41
ちなみにですが、テーブルの空欄には実際はNULLという値を入れております。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。