2015-01-31 2 views
0
  1. PreparedStatement работает нормально, если запрос является статическим (без параметров), например:JDBC PreparedStatement не работает в JSP

    select * from RWEMP; 
    
  2. , но если я использую ниже код условия поиска:

    SELECT * FROM RWEMP WHERE ENAME= ? 
    

    Он ничего не показывает, он просто показывает заголовки таблиц.

    <FORM METHOD="get"> 
         <INPUT TYPE="text" NAME="cond" SIZE=50> 
    </FORM> <br> <br> 
    
        <% String value = request.getParameter("cond"); 
         if (value != null) { %> 
        <H3> Search results for <I> <%= value %> </I> </H3> 
         <% } %> 
    
        <%@page import="java.sql.*" %> 
         <%Class.forName("oracle.jdbc.driver.OracleDriver"); 
    
          String sql="SELECT * FROM RWEMP WHERE ENAME= ?"; 
    
         Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","hari","root"); 
         PreparedStatement stat=con.prepareStatement(sql); 
         stat.setString(1,"value"); 
         ResultSet rs=stat.executeQuery(); 
         try { 
          if(rs!=null) { 
         %>  
         <table border=1 cellspan=60 cellpadding=16> 
          <tr> 
           <th> Emp ID </th> 
           <th> Emp Name </th> 
           <th> Emp Dept </th> 
           <th> Emp Area </th> 
           <th> Emp D.O.B </th> 
           <th> EMP Mobile </th> 
           <th> Emp Salary </th> 
           <th> EMP Wife </th> 
          </tr> 
         <% 
          while(rs.next()) { 
         %> 
         <tr> 
          <td><%= rs.getString("EID")%> </td> 
          <td><%= rs.getString("ENAME") %> </td> 
          <td><%= rs.getString("EDEPT")%> </td> 
          <td><%= rs.getString("EAREA")%> </td> 
          <td><%= rs.getString("EDOB")%> </td> 
          <td><%= rs.getString("EMOBILE")%> </td> 
          <td><%= rs.getString("ESAL")%> </td> 
          <td><%= rs.getString("ESPOUSE")%> </td> 
         </tr> 
         <% 
          } 
          } 
        }       
          catch(SQLException e) { 
          e.printStackTrace(); 
          } 
    con.close(); 
    

    %>

+1

Несвязанный, но: не помещайте SQL-код в JSP, особенно не получая соединение. Для этого используйте пул соединений. JSP должен ** только ** содержать код презентации, никогда не Java-код и абсолютно никогда не SQL-код. –

ответ

3

Изменение параметров запроса кода связывания ваших PreparedStatement «ы, как

stat.setString(1, value); // no quotes 

Вам нужно искать на то, что содержит переменную value, а не по его имени «значение».

+0

Спасибо, чувак ....> – hari

+0

Добро пожаловать, Хари. –

Смежные вопросы