
<%@ page import="java.sql.*" %>
<%
//パラメータの取得
String keyword = request.getParameter("keyword");
//ドライバーのロード
Class.forName("com.mysql.jdbc.Driver");
//DBに接続
String url = "jdbc:mysql://localhost/java4z?useUnicode=true&characterEncoding=MS932";
String user = "root";
String pass = "";
Connection con = DriverManager.getConnection(url,user,pass);
//SQL発行先ほど指定したConnection con を利用
Statement stmt = con.createStatement();
String sql = "select * from shop where name like '%" + keyword + "%' or author like '%" + keyword + "%' ;
ResultSet rs = stmt.executeQuery(sql);%>
jspとmysqlの連動したページを作っているのですが
select count(*) from テーブル名;を使い
件数を表示(XX件目など)させたいのです
さらに値段からXX円以上からXX円以下なども
データから検索し表示させたいのですが
String sql = "select * from shop where name like '%" + keyword + "%' or author like '%" + keyword + "%' ;の部分をどのように記述すればよいか
解かりません! どなたかお願いします☆()

No.2ベストアンサー
- 回答日時:
取得したデータ数を知りたいのですよね?
http://www.gimlay.org/~javafaq/S135.html
こちらの「java.sql.ResultSetで取得したデータの数を得たいのですが?」で
3通りの方法が紹介されています。
参考URL:http://www.gimlay.org/~javafaq/S135.html
この回答への補足
Connection con = DriverManager.getConnection(url,user,pass);
//SQL発行先ほど指定したConnection con を利用
Statement stmt = con.createStatement();
//String sql = "select * from shop where name like '%" + keyword + "%' or author like '%" + keyword + "%'";
ResultSet rs = stmt.executeQuery("select * from shop where name like '%" + keyword + "%' or author like '%" + keyword + "%'");
rs.next();
// 行数を取得する。
int count = rs.getInt(1);
としたのですが
java.lang.NumberFormatException: null
と言ったエラーが出ます(泣
朝まで粘ってたんですが。力尽きそうです(泣

No.4
- 回答日時:
sakuhatさんありがとうございます!!
できました☆
こんな便利なメソッドがあったとは。。
全く違う方法でやろうとしてました(泣
本当に感謝しています!
ありがとうございました。

No.3
- 回答日時:
2番目の方法を使っているようですが
2番目はSQL文でCOUNTを使わなければなりませんし、
この方法は行数だけしか取得できません。
while文使って数えるか、last()で最終行まで行ってgetRow()で
現在何行目か取得する方法でいけると思います。
この回答への補足
できました!!昨日あれだけできなかったのに(笑
ただ、、ひとつだけ問題があるのですwhile(rs.next()) を使うと下に表が表示されないのです。
rsと言う変数を下の表が読み取っていないみたいです
どうしたらよいでしょうか? 何度もすみません
自分でも色々試して見ます。
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql = "select * from shop where name like '%" + keyword + "%' or author like '%" + keyword + "%'";
ResultSet rs = stmt.executeQuery(sql);
int count = 0;
while(rs.next()) {
count++;
}
%>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
title>書籍検索2</title></head><body>
<jsp:include page="header1.html" />
「<%= keyword %>」の検索結果
「<%= count %>」件見つかりました
<table border="1" cellpadding="8">
<tr><th>ID</th><th>イメージ</th><th>書名</th><th>値段</th><th>著者</th><th>出版社</th><th>ジャンル</th><th>カテゴリー</th></tr>
<%
//結果の表示
while(rs.next()){
//列名を指定してResultSetから値を取得する
int id = rs.getInt("id");
String image = rs.getString("image");
String name = rs.getString("name");
int price = rs.getInt("price");
String author = rs.getString("author");
String publish = rs.getString("publish");
String genre = rs.getString("genre");
String kind = rs.getString("kind");
%>
<tr>
<td><%= id %></td>
<td><img src="img/<%= image %>"</td>
<td><%= name %></td>
<td><%= price %></td>
<td><%= author %></td>
<td><%= publish %></td>
<td><%= genre %></td>
<td><%= kind %></td>
</tr>
<%
}
con.close();
%>
</table>
</body>
</html>
No.1
- 回答日時:
まずjspとsqlがごっちゃになっているようですね。
今回の質問はsqlの質問ですのでjsp云々は関係ありません。mysqlはsqlという文法で書かれた命令を実行します。このsqlをjspで作成しているに過ぎないので、まずは必要なsqlを考えて、それを生成するコードをjspで書く、という流れになります。ここを別けて考えないと後々混乱しますよ。ちなみにjspはわからないのでsqlに関する事だけ。まず値段に関してですが、low以上high以下をsqlで表現すると'値段フィールド between low and high'になります。これをwhere句に追加して下さい。
件数表示ですが、これはこのsqlを実行した後、マッチしたデータの件数を知りたいという事ですか?これはもしかしたらjspに「直前に実行したsqlの行数を得る」という関数があるんじゃないかな。調べてみて下さい。
この回答への補足
文字数の関係で書けなかったのですが
MYSQLにデータは登録してあります。
drop table if exists shop;
create table shop (
id int auto_increment primary key,
image varchar(40),
namevarchar(130),
priceint,
authorvarchar(30),
publish varchar(30),
genrevarchar(30),
kindvarchar(30)
);
insert into shop values(null,'~~~.jpg','タイトル~~,2520,'著者~~ ','出版社~~','~~','~~' );と30個くらいデータを入れて、TOMCATを起動してjspファイルを表示させてキーワードを入力して検索ボタンを押すとデータから検索したりできるところまでは完成しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLの.sqlファイルを実...
-
jspとsqlの連結したページ
-
MySQL記述でアドバイスを
-
insert into $DB (data1, data2...
-
【php+mysql】mysqlのレコード...
-
mysqlって???(汗
-
MySQL4.1のサービス起動ができ...
-
SQLのVARCHARとVARCHAR2の違い
-
アクセス制限
-
全権限をもつユーザの追加方法
-
ソケットのエラーについて
-
Usage: \\.<filename> | sourc...
-
winmysqladmin.exe が赤信号です
-
TYPE=Inoodbが指定するとワーニ...
-
mysql入門以前という本
-
カラムにデータが重複している...
-
mysqlがインストールされている...
-
データベースエンジン
-
取出す順番
-
ODP.NETのバージョン確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP+MySQLから結果セット取得後...
-
F5対策 sql発行ページにて
-
【php+mysql】mysqlのレコード...
-
どうしても、%$keyword%でひっ...
-
複数条件の検索について
-
my sqlはどこにあるのか?
-
PEARでレコード数の取得
-
MySQLで、INSERT文でエラー
-
PHPで特定のレコードを取り出す
-
PHP+MySQLによるINSERTについて
-
updateがうまくできない。
-
SQLiteについて
-
mysql PHPでUPDATE
-
SQL whereの中のif文について
-
Perlでexecuteをまとめて実行し...
-
コメントが消えてしまいます
-
PHP+MySQLでデータ登録がうまく...
-
mySQLで複雑な演算
-
mysql PHPでUPDATE
-
MySQLカラム名は日本語と英数字...
おすすめ情報