解説動画
パラメーターがあるSQLは、やっぱりこれですよね。
■動画はこちら
■Youtube版の解説で使用しているソースコード
動画と一緒にこちらも参考にどうぞ。
JavaサーブレットからのOracle接続
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.naming.InitialContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; public class PreparedStatementTestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //ブラウザから送信された抽出条件を取得 String param = request.getParameter("category"); //DBに接続(URL,USER_ID,PASSWORD) InitialContext ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oraora"); Connection conn = ds.getConnection(); //SQLを発行 PreparedStatement pstmt = conn.prepareStatement("SELECT ITEM_NAME,PRICE FROM PRICE_LIST WHERE CATEGORY = ?"); pstmt.setString(1, param); ResultSet rs = pstmt.executeQuery(); //結果を取得 StringBuilder sb = new StringBuilder(); sb.append("<html><header><meta charset=\"UTF-8\"></header><body>"); while(rs.next()) { sb.append(rs.getString("item_name")).append(" ").append(rs.getString("price")).append("<br />"); } sb.append("</body></html>"); //クローズ rs.close(); pstmt.close(); conn.close(); //結果をブラウザへ ServletOutputStream sos = response.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(sos,"UTF-8"); BufferedWriter bw = new BufferedWriter(osw); bw.write(sb.toString()); bw.flush(); bw.close(); }catch(Exception e) { e.printStackTrace(); } } } |