前提・実現したいこと
現在、エクセル内のデータ(セル内改行データを含む)をPostgreSQLの
COPYコマンドを使用してインポート作業を終え
HTMLフォームからgetで部品番号などのデータを渡しそれを
受け取ったJSPがSQLを実行表示させるというプログラムなのですが
そこで、今回解決したいことはセル内改行データを含むものが上手く
検索結果画面(JSP)で表示されないという点です。
発生している問題・エラーメッセージ
データベース内の状態
PostgreSQL
1 2---------------+-------+---------------------+----------+----------------------------+------------------------+------ 3秋庭プレス | NULL | 3401 071 0000 | NULL | ホルダー | 抜統 | 3 4 秋庭プレス | NULL | 3401 071 0000 | NULL | ホルダー | 整形統 | 3 5 秋庭プレス | NULL | 3401 071 0000 | NULL | ホルダー | トリムピアス | 3 6 秋庭プレス | NULL | 3401 071 1000 +| NULL | ホルダー | NS | 3 7 | | 3401 071 2000 | | | | 8 秋庭プレス | NULL | 3401 071 1000 +| NULL | ホルダー | SK | 3 9 | | 3401 071 2000 | | | | 10 秋庭プレス | NULL | 3401 071 1000 +| NULL | ホルダー | TP | 3 11 | | 3401 071 2000 | | | | 12 秋庭プレス | NULL | 3401 071 2000 | NULL | ホルダー | Pi1 | 2 13 秋庭プレス | NULL | 3401 071 2000 | NULL | ホルダー | Pi2 | 2 14 秋庭プレス | NULL | 3401 072 2010 | NULL | タンクキャップ | NS | 5 15 秋庭プレス | NULL | 3401 072 2010 | NULL | タンクキャップ | トリム | 5 16 秋庭プレス | NULL | 3401 072 2010 | NULL | タンクキャップ | 統 | 5 17 秋庭プレス | NULL | 3401 072 2010 | NULL | タンクキャップ | Pi | 5 18 秋庭プレス | NULL | 3401 072 2010 | NULL | タンクキャップ | SK | 5 19 秋庭プレス | NULL | 3210 000 0000 | NULL | ベース | BL | 2 20 秋庭プレス | NULL | 3210 000 0000 | NULL | ベース | 曲げ | 2 21 秋庭プレス | NULL | 3400 051 1010 | NULL | カバー | BL | 6 22 秋庭プレス | NULL | 3400 051 1010 | NULL | カバー | NS | 6 23
###元となるJSPソース
JSP
1<%@page import="java.util.*"%> 2<%@page import="java.sql.*"%> 3<%@page import="java.io.*"%> 4<%@page import="java.text.*"%> 5 6<%@ page language="java" contentType="text/html; charset=UTF-8" 7 pageEncoding="UTF-8"%> 8<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 9<html> 10<head> 11<meta http-equiv="Content-Type" content="text/html; charset="UTF-8"> 12<link rel="stylesheet" type="text/css" href="/Taiyo/css/Taiyo-jsp.css"> 13<title>検索結果画面</title> 14</head> 15<body> 16 17 18<% 19 //変数定義 20 Connection conn = null; 21 PreparedStatement ps = null; 22 ResultSet rs = null; 23 String HOME = (System.getenv("CATALINA_HOME")); 24 25 try { 26 27 Properties properties = new Properties(); 28 InputStream istream = new FileInputStream(HOME + "/webapps/Taiyo/jsp/dbinfo.properties"); 29 properties.load(istream); 30 31 String dbURL = properties.getProperty("dbURL"); 32 String user = properties.getProperty("user"); 33 String pass = properties.getProperty("pass"); 34 String key = "%"; 35 36 if(request.getParameter("key") != null) { 37 if(request.getParameter("key") != "") { 38 key = "%" + request.getParameter("key") + "%"; 39 } 40 } 41 42 conn = DriverManager.getConnection(dbURL, user, pass); 43 44 45 String sql = "SELECT * from kanagata_taiyo WHERE lname ILIKE ? or cname ILIKE ? or partcode ILIKE ? or prodname ILIKE ? or partname ILIKE ? or pr1 ILIKE ? or amt ILIKE ? "; 46 47 ps = conn.prepareStatement(sql); 48 key = key.replace("*", "%"); 49 ps.setString(1, key); 50 ps.setString(2, key); 51 ps.setString(3, key); 52 ps.setString(4, key); 53 ps.setString(5, key); 54 ps.setString(6, key); 55 ps.setString(7, key); 56 57 //SELECTを実行する 58 rs = ps.executeQuery(); 59 60 //取得した結果を全件出力する 61 //out.println("<div class="table-scroll">"); 62 out.println("<table>"); 63 out.println("<tr><th>貸与先名</th><th>御得意先名</th><th>製品番号</th><th>製品名</th><th>部品名</th><th>工程</th><th>金型数</th</tr>"); 64 while(rs.next()){ 65 out.println("<tr>"); 66 out.print("<td>" + rs.getString("lname") + "</td>"); 67 out.print("<td>" + rs.getString("cname") + "</td>"); 68 out.print("<td>" + rs.getString("partcode") + "</td>"); 69 out.print("<td>" + rs.getString("prodname") + "</td>"); 70 out.print("<td>" + rs.getString("partname") + "</td>"); 71 out.print("<td>" + rs.getString("pr1") + "</td>"); 72 out.print("<td>" + rs.getString("amt") + "</td>"); 73 out.println("</tr>"); 74 } 75 out.println("</table>"); 76 //out.println("</div>"); 77 78 } catch (SQLException ex) { 79 ex.printStackTrace(); 80 } finally { 81 try { 82 if (conn != null && !conn.isClosed()) { 83 conn.close(); 84 } 85 } catch (SQLException ex) { 86 ex.printStackTrace(); 87 } 88 } 89%> 90</body> 91</html>
試したこと、推測
恐らくですが、上記PostgreSQL内のプラス(+)記号を
JSPのどこかで変換してやれば良いのでしょうがそのソースの書き方が分かりません。
自分なりに調べたのですが行き詰ってしまったのでご教示頂けると幸いです。
補足情報(FW/ツールのバージョンなど)
あなたの回答
tips
プレビュー