出来上がった途端、久しぶりに「キターーーー!!」とか言ってしまった。

昨日詰まってたのは、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ができました。

万歳!

空白スペース入れて同じ項目で複数検索とかはできないけど。