[前][次][番号順一覧][スレッド一覧]

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]