RikuMoto
@RikuMoto (Riku Moto)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JSPファイルから値を取得しサーブレットでソート処理させる

解決したいこと

JSPファイルから値を取得しサーブレットでソート処理させたいです。

JSPファイルではselect文で一覧表示しています。
(例)
id  販売日  個数  金額
1  2015/05  3   2000
2  2015/05  2   3400
3  2015/05  15  8900

こちらのいずれかのカラムをドロップダウンリストから選択してソート表示させたいです。

わからない箇所

JSPファイルからドロップダウンリストでカラムを選択してサーブレットで値を取得するまでは行けたのですが
そのあとのソート処理の記述がわかりません。

発生している問題

Sales.jsp
<form action="./Sort_items" method = "POST">
	<select name = "items">
		<option selected value = "#">選択してください</option> 
		<option value = "id">id</option>
		<option value = "date">販売日</option>
		<option value = "amount">個数</option>
		<option value = "price">金額</option>
	</select>
	<select name = "sort">
		<option selected value = "#">選択してください</option> 
		<option value = "asc">昇順</option>
		<option value = "desc">降順</option>
	</select>
	<input type = "submit" value = "検索">
</form>
Sort_items.java
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String item[] = request.getParameterValues("items");
		String sort[] = request.getParameterValues("sort");
		try{
			Class.forName("com.mysql.jdbc.Driver");
			Connection sort_items = DriverManager.getConnection("jdbc:mysql://DB接続");
			Statement state = sort_items.createStatement();
		try{
			int res = state.executeUpdate("ここでソート文を記述すると思っていますがうまく記述できません");
}

自分で試したこと

executeUpdateメソッドはinsert、update、delete構文しか使えないのでソートを行うことはできるのか?そういったことを検索かけていました。できそうな構文があったので行いましたができませんでした。

Sort_items.java
int res = state.executeUpdate("update \"" + sort_items + "\" set \"" + item[0] + "\" = \"" + item[0] + "\" + 1 order by \"" + item[0] + "\" \"" + sort[0] + "\"");

宜しくお願い致します。

1

1Answer

下記でソートされたデータを取得できるかと思います。
ResultSetの使い方は検索してみてください。

PreparedStatement ps = sort_items.prepareStatement("SELECT id,date,amount,price FROM [テーブル名] ORDER BY" + item + sort);
ResultSet rs = ps.executeQuery();

ちなみにrequest.getParameterで取得されるものは配列ではないので変数はただのString型でよいかと思います。
String item[]→String item
String sort[]→String sort

1Like

Comments

  1. @RikuMoto

    Questioner

    返答ありがとうございます!
    無事解決しました!
    あありがとうございます!

Your answer might help someone💌