didier1809 ${citation_perso} | J'ai fait un essai avec ajax (une aide à la recherche, à la google style), qui va lire des enregistrement dans Oracle.
Donc à chaque frappe du clavier --> Un select executé.
J'aimerai vos avis sur plusieurs points :
- Est-ce que je gère bien les connexions/déconnexions ?
- Est-ce que ce code est correct au point de vue performances ?
- Que changeriez vous ?
Je cherche surtout à faire du code propre et performant, et je vous rassure, ce n'est pas un exercice à terminer pour un cours quelconque ;-)
Code :
- package lu.dinow.ajax;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.sql.*;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- public class StudentInfo extends javax.servlet.http.HttpServlet {
- private Connection orclCon;
- public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws IOException, ServletException {
- System.out.println("doGet" );
- res.setContentType("text/xml" );
- PrintWriter out = res.getWriter();
- String ret = process(req,req.getSession());
- out.print(ret);
- out.close();
- }
- public void init() throws ServletException {
- super.init();
- try {
- orclCon = connect();
- } catch(ClassNotFoundException e) {
- e.printStackTrace();
- } catch(SQLException e) {
- e.printStackTrace();
- }
- }
- private String process(HttpServletRequest res, HttpSession session){
- String ret = "";
- try{
- ret = "<root>";
- String typedLetters = res.getParameter("roll" );
- Connection con = (orclCon == null) ? connect() : orclCon;
- Statement stmt = con.createStatement();
- String query = "Select First_name from employees where lower(first_name) like lower('" + typedLetters +"%') order by First_name";
- ResultSet rs = stmt.executeQuery(query);
- int i = 0;
- while(rs.next()){
- ret +="<employee id='"+ (i++) +"'>"+rs.getString("First_name" )+"</employee>";
- }
- rs.close();
- stmt.close();
- ret +="</root>";
- }catch(Exception ex){
- System.out.println(ex.getMessage());
- }
- return ret;
- }
- public void destroy() {
- super.destroy();
- if (orclCon != null){
- try {
- System.out.println("Disconnected from Oracle" );
- orclCon.close();
- } catch(SQLException e) {
- e.printStackTrace();
- }
- }
- }
- private Connection connect() throws ClassNotFoundException, SQLException {
- System.out.println("Attempt to connect to Oracle..." );
- String driverName = "oracle.jdbc.driver.OracleDriver";
- Class.forName(driverName);
- String url = "jdbc:oracle:thin:@EMEALU6CZ5J2J:1521:ORCL";
- return DriverManager.getConnection(url, "HR", "HR" );
- }
- public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws IOException, ServletException {
- System.out.println("doPost" );
- res.setContentType("text/xml" );
- PrintWriter out = res.getWriter();
- String ret = process(req, req.getSession());
- out.print(ret);
- out.close();
- }
- }
|
Message édité par didier1809 le 19-10-2009 à 16:35:22 ---------------
.
|