出来上がった途端、久しぶりに「キターーーー!!」とか言ってしまった。
昨日詰まってたのは、PreparedStatementの
pstmt.set(1,入力された値);
のところになぜか入力値が格納されなくて、エラーはないけど正確な検索結果が得られなかったというところ。
ところが、プログラムはきちんと既に動いていたのです。
私は書籍名をキーワード検索していたつもりが、コードの中のSQLが
select * from bookDB
where title = ?
になってた。全文一致しないとレコード出てこないようになってた!
試しに入力欄に本の名前そっくり入れて検索かけたら、ずばりヒット。
なあんだ…SQLをlike検索に直せば終わるじゃん。
これで書籍名のキーワード検索は完成。
で、書籍名と著者とか、二つの項目でand検索したいときはどうすんの?
これは案外簡単。
だってPreparedStatementのSQL文を
select * from bookDB
where title like ? and author like ?…(以下、検索され得る列名のlike検索をandでつなぐ);
ってしとけばいいだけ。これで入力された部分でand検索してくれます。
入力がないところは「入力値がないよー」とかエラーになりそうなかんじですが、ならなかったです。
そんなわけで、書籍名、著者、出版社、所持している部所でキーワード検索できるサーブレットとJSPができました。
万歳!
空白スペース入れて同じ項目で複数検索とかはできないけど。
昨日詰まってたのは、PreparedStatementの
pstmt.set(1,入力された値);
のところになぜか入力値が格納されなくて、エラーはないけど正確な検索結果が得られなかったというところ。
ところが、プログラムはきちんと既に動いていたのです。
私は書籍名をキーワード検索していたつもりが、コードの中のSQLが
select * from bookDB
where title = ?
になってた。全文一致しないとレコード出てこないようになってた!
試しに入力欄に本の名前そっくり入れて検索かけたら、ずばりヒット。
なあんだ…SQLをlike検索に直せば終わるじゃん。
これで書籍名のキーワード検索は完成。
で、書籍名と著者とか、二つの項目でand検索したいときはどうすんの?
これは案外簡単。
だってPreparedStatementのSQL文を
select * from bookDB
where title like ? and author like ?…(以下、検索され得る列名のlike検索をandでつなぐ);
ってしとけばいいだけ。これで入力された部分でand検索してくれます。
入力がないところは「入力値がないよー」とかエラーになりそうなかんじですが、ならなかったです。
そんなわけで、書籍名、著者、出版社、所持している部所でキーワード検索できるサーブレットとJSPができました。
万歳!
空白スペース入れて同じ項目で複数検索とかはできないけど。