2015-02-01 2 views
-1

쿼리가 사용자 번호에 따라 결과를 검색하도록합니다. 다른 검색어는 사용자 이름으로 검색합니다. 나는 몇 가지 작업을했지만 넷빈즈에 어떤 오류를 표시하지 않았고 나는이에서했던 모든 잘못 일 경우() 조건두 개의 쿼리 조건에 대해 단일 PreparedStatement를 실행하는 방법

도움말 나를 해결하기 위해 경우에 산출로 그냥 ... 처음에 붙어

<% String val_name = request.getParameter("name"); 
String val_number = request.getParameter("number"); 
String query; 
if((val_name != null)&&(val_number != null)) { %> 
    <h4> Use only one Column for Search </h3> 
<% } 
else if((val_name == null)&&(val_number == null)) { %> 
    <h4> Enter any Information on above field ... </h4> 
<% } 
else { 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","hari","root"); Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","hari","root"); 
    PreparedStatement stat; 
    ResultSet rs; 
    if(val_number != null) { 
     query= val_number;    // user Entered only Number Field ... 
     String sql="SELECT * FROM EMP WHERE EMPNO= ?"; 
     stat=con.prepareStatement(sql); 
     stat.setString(1,val_number); 
     rs=stat.executeQuery(); 
    } 
    else { 
     query= val_name; // user Entered only Name Field ... 
     String sql="SELECT * FROM EMP WHERE ENAME = ?"; 
     stat=con.prepareStatement(sql); 
     stat.setString(1,val_name); 
     rs=stat.executeQuery(); 
    } 

    try { 
     if(rs!=null) { 
      %> 
      <br> 
      <table class="gridtable" border=1 cellspan=60 cellpadding=16> 
      <tr> 
      <th> Emp ID </th> 
      <th> Emp Name </th> 
      <th> Emp Dept </th> 
      <th> Emp D.o.B </th> 
      <th> Show Record </th> 
      <th> Record Update </th> 
      <th> Compassionate </th> 
      </tr> 
      <% 
      while(rs.next()) { 
       %> 
       <tr> 
       <td><%= rs.getInt("EMPNO")%> </td> 
       <td><%= rs.getString("ENAME") %> </td> 
       <td><%= rs.getString("JOB")%> </td> 
       <td><%= rs.getInt("DEPTNO")%> </td> 
       <td><button><a class="ui-button" type="button" href="/result.jsp?name="<%=name%> target="destination"> Show </a> </buton></td> 
       <td><button><a class="ui-button" type="button" href="/update.jsp?name="<%=name%> target="destination"> Update </a> </buton></td> 
       <td><button><a class="ui-button" type="button" href="/compassionate.jsp?name="<%=name%> target="destination"> Compassionate </a> </buton></td> 
       </tr> 
       <% 
      } 
     } 
    } 
    catch(SQLException e) { 
     e.printStackTrace(); 
    } 
    con.close(); 
}%> 
+0

** ** JSP에 JDBC 코드를 삽입하지 마십시오. [모델 1] (http://en.wikipedia.org/wiki/Model_1)은 확장 가능하지 않으며 15 년 이상 업계에서 널리 사용되지 않았습니다. –

+0

하지만 작은 응용 프로그램 테스트 용입니다 ... [최대 20 개 레코드] 괜찮겠습니다. 질문에 대한 제안을 드릴 수 있습니까? – hari

+0

' if-else' 체인. 또한이 코드는 매우 약해 보일 것입니다. –

답변

1

Connection, PreparedStatementResultSet은 모두 최종 else 블록에 정의되어 있습니다. 그들을 위로 이동하십시오.

else {   
    String url = "jdbc:oracle:thin:@localhost:1521:XE"; 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    Connection con = DriverManager.getConnection(url,"hari","root"); 
    PreparedStatement stat; 
    ResultSet rs; 

String val_name = request.getParameter("name"); 
String val_number = request.getParameter("number"); 
String query; 
String url = "jdbc:oracle:thin:@localhost:1521:XE"; 
Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con = null; 
PreparedStatement stat = null; 
ResultSet rs = null; 

같은 변수를 정의하고 다음 if-else 체인의 값을 설정합니다.

관련 문제