mysql:6115
From: "Tatsuya Kondo" <"Tatsuya Kondo" <konet@xxxxxxxxxx>>
Date: Wed, 11 Sep 2002 14:11:53 +0900
Subject: [mysql 06115] Re: 検索が正常に出来ない
近藤です。 create table profile ( name char(20), sex tinyint(1), age tinyint(2) ); こんな感じでしたら問題なく検索出来るようになりました。 しかし、 create table profile ( name char(20), sex tinyint(1), age tinyint(2), time timestamp(10) ); として、 insert into profile values("user01,1,22,now()"); insert into profile values("user01,1,22,now()"); ----- Original Message ----- From: "城" <sora_iro@xxxxxxxxxx> To: <ml@xxxxxxxxxx> Sent: Wednesday, September 11, 2002 1:32 PM 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]