mysql:6114
From: "城" <"城" <sora_iro@xxxxxxxxxx>>
Date: Wed, 11 Sep 2002 13:32:15 +0900
Subject: [mysql 06114] Re: 検索が正常に出来ない
> MLにぶつけるよりかは、お金を出してたくさん本を買って勉強した > 方がいい時もあります。 本に載っているサンプルとかで良いんでしょうか? > 本を買ったら後は、修行僧のように基礎から地道にこつこつとやれば > いろいろと分かってくると思います。 > そこでどうしても分からないことがあればMLに投稿する、 > という形が理想だと思います。 僕の場合ですと 本で探す→webで探す→めちゃくちゃに作ってみる→動く よっしゃ!!(ス パゲッティコード満載) 本で探す→webで探す→めちゃくちゃに作ってみる→動かない がーーん!!→ML の皆様お願いします。 の2パターンです > 新宿:紀伊国屋書店 はい。↑は良く利用させていただいてます。 そこで検索の時に使ったプログラムのコードを参考までに載せさせていただきま す。 これはギリギリ動いています。 サッカー選手のDB←この辺も作る意味がわからないけど気にしないでください^ ^; table senshu name : VARCHAR area : VARCHAR //国名です。2バイト文字を入れています age : VARCHAR //この値ですが、年代という意味合いなのでintで はなくcharを使いました(汗 comment : VARCHAR //コメントです。ポジションとかです。オーウェンは足が速 いとか。 このテーブルから読み込みさせました。 フォームから国と年齢をセレクトBOXでサーブレットでレスポンス処理でDBから 検索して表示させるという仕組みにしたのです。 当初は検索が全くできませんでした。原因を調べたところ "書き込んだときに8859-1で書き込んだのに検索の時にシフトJISで読み込もうと していた" ためでした。 書き込みもフォーム→サーブレットで処理しています。 次に検索結果が半分しか出てきませんでした。イングランドで検索してもスタメ ンが6人しかいない感じです。 これはResultSetのnext();の使い方に間違いがあったためです。 import javax.servlet.* ; import javax.servlet.http.* ; import java.io.* ; import java.sql.*; public class ShowServlet extends HttpServlet { long No; String serchArea = ""; String serchAge = ""; String stringViewNum = ""; int ViewNum; public void init( ServletConfig config) throws ServletException { super.init(config); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { serchArea = request.getParameter("area"); serchAge = request.getParameter("age"); stringViewNum = request.getParameter("viewnum"); boolean flagZero = stringViewNum.equals(""); if( flagZero == true){ stringViewNum = "0"; } Integer tmpViewNum = Integer.valueOf(stringViewNum);//intに変換処理♪ ViewNum = tmpViewNum.intValue(); String data = this.ConDB(serchArea,serchAge,ViewNum); response.setContentType("text/html;charset=\"Shift_JIS\""); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title></title>"); out.println("</head>"); out.println(""); out.println("<body>"); out.println(data); if(ViewNum >= 10){ out.println("<form name =\"back\" method=\"get\" action=\"ShowServlet\">"); out.println("<input type=\"hidden\" name=\"area\"value=\""+ serchArea +"\">"); out.println("<input type=\"hidden\" name=\"age\"value=\""+ serchAge +"\">"); out.println("<input type=\"hidden\" name=\"viewnum\"value=\""+ (ViewNum - 10) + "\">"); out.println("<input type=\"submit\" value=\"前\">"); } out.println("<form name =\"go\" method=\"get\" action=\"ShowServlet\">"); out.println("<input type=\"hidden\" name=\"area\"value=\""+ serchArea +"\">"); out.println("<input type=\"hidden\" name=\"age\"value=\""+ serchAge +"\">"); out.println("<input type=\"hidden\" name=\"viewnum\"value=\""+ (ViewNum + 10) + "\">"); out.println("<input type=\"submit\" value=\"次 \">"); out.println("<br>"); out.println("<br>"); out.println("<a href =\"http://www.gogo-jo.no-ip.com/koihiroi/\">top</a>"); out.println("</body>"); out.println("</html>"); out.close(); System.out.println("表示正常終了"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } private String Disp(String name,String age,String area,String comment){ StringBuffer dsb = new StringBuffer("<br>\n"); String Name = name; String Age = age; String Area = area; String Comment = comment; dsb.append("『" + Name + "』<br>\n"); dsb.append("<br>"); dsb.append(Area + "┃"+ Age + "<br>\n"); dsb.append("<br>\n"); dsb.append( "<pre>"+ Comment + "</pre><br>\n"); dsb.append("<br>\n"); dsb.append("<hr>\n"); String Kiji = dsb.toString(); return Kiji; } private String ConDB(String area,String age,int viewnum){ StringBuffer conDBsb = new StringBuffer(); String DBpara; String queryArea; String queryAge; String querySerch; int ShowNum = viewnum; boolean flagArea = area.equals("0");// boolean flagAge = age.equals("0"); if( flagArea == false && flagAge == false){ queryArea = ("where area = \'"+ area + "\' and "); queryAge = ("age = \'"+ age +"\'"); } else if( flagArea == true & flagAge == false){ queryArea = ""; queryAge = ("where age = \'" + age +"\'"); } else if(flagArea == false & flagAge == true){ queryArea = ("where area = \'" + area +"\'"); queryAge = ""; } else{ queryArea = ""; queryAge = ""; } querySerch = queryArea + queryAge; try { Class.forName("org.gjt.mm.mysql.Driver"); //コネ クタの呼び出し // データベースへ接続 Connection con = DriverManager.getConnection("jdbc:mysql://localhost/SimpleDeai"); Statement stmt = con.createStatement(); //検索クエリ送信 String query = "select * from senshu "+ querySerch +" order by No desc limit "+ ShowNum + "," + (ShowNum + 10); ResultSet rs; rs = stmt.executeQuery(query); rs.beforeFirst(); while(rs.next()){ //rs.next(); これが2個目のエラーの 原因でした。上の判定の部分ですでに実行されるようです String resName = null; String resAge = null; String resArea = null; String resComment = null; resName = rs.getString("name"); resAge = rs.getString("age"); resArea = rs.getString("area"); resComment = rs.getString("comment"); conDBsb.append(this.Disp(resName,resAge, resArea,resComment)); } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } DBpara = conDBsb.toString(); return DBpara; } } こんな感じです。アルゴリズムの指摘お願いします♪
6091 2002-09-10 14:37 ["Tatsuya Kondo" <kon] 検索が正常に出来ない 6092 2002-09-10 15:04 ┣["altana" <altana@xxx] 6094 2002-09-10 15:13 ┣["KAWAI,Takanori" <GC] 6097 2002-09-10 16:58 ┃┗[fukuixyz <fukuixyz@x] 「 addslashes をつける」意味 6098 2002-09-10 18:34 ┃ ┣["KAWAI,Takanori" <GC] 6100 2002-09-10 19:20 ┃ ┗["Takashi Yamashita" ] 6106 2002-09-11 10:04 ┃ ┗[fukuixyz <fukuixyz@x] 6108 2002-09-11 11:29 ┃ ┣[mohri <mohri@xxxxxxx] 6118 2002-09-11 14:30 ┃ ┗[<moeru@xxxxxxxxxx> ] 6120 2002-09-11 14:57 ┃ ┣[Tomohiro 'Tomo-p' KA] 6122 2002-09-11 15:24 ┃ ┃┣["Takashi Yamashita" ] 6151 2002-09-11 18:46 ┃ ┃┗[<moeru@xxxxxxxxxx> ] 6121 2002-09-11 15:24 ┃ ┗["KAWAI,Takanori" <GC] 6095 2002-09-10 15:25 ┣[HAMAI Kyoichi <k-ham] 6096 2002-09-10 15:27 ┣[遠藤 俊裕 <endo_t@xx] 6099 2002-09-10 18:39 ┣["城" <sora_iro@xxxxx] 6101 2002-09-10 19:42 ┣["Takashi Yamashita" ] 6102 2002-09-10 20:24 ┣[楠吉彦 <moredebu@xxx] 6103 2002-09-11 01:54 ┃┗["Tatsuya Kondo" <kon] 6104 2002-09-11 08:26 ┃ ┗[遠藤 俊裕 <endo_t@xx] 6105 2002-09-11 09:46 ┃ ┗["KAWAI,Takanori" <GC] 6107 2002-09-11 10:04 ┃ ┗[遠藤 俊裕 <endo_t@xx] 6109 2002-09-11 11:57 ┃ ┗["城" <sora_iro@xxxxx] 6111 2002-09-11 12:13 ┃ ┣[遠藤 俊裕 <endo_t@xx] 6112 2002-09-11 12:25 ┃ ┗["Takashi Yamashita" ] -> 6114 2002-09-11 13:32 ┃ ┗["城" <sora_iro@xxxxx] 6115 2002-09-11 14:11 ┃ ┣["Tatsuya Kondo" <kon] 6116 2002-09-11 14:08 ┃ ┗["Takashi Yamashita" ] 6117 2002-09-11 14:29 ┃ ┗["城" <sora_iro@xxxxx] 6119 2002-09-11 14:47 ┃ ┗[mohri <mohri@xxxxxxx] 6123 2002-09-11 15:32 ┃ ┗["Takashi Yamashita" ] 6128 2002-09-11 17:47 ┃ ┗[mohri <mohri@xxxxxxx] 6129 2002-09-11 17:58 ┃ ┗["城" <sora_iro@xxxxx] 6131 2002-09-11 18:20 ┃ ┗["Takashi Yamashita" ] 6110 2002-09-11 12:09 ┗["足田博信" <h_ashida]