【发布时间】:2015-03-30 19:54:43
【问题描述】:
-
如果查询是静态的(无参数),PreparedStatement 工作正常,例如:
select * from RWEMP; -
但如果我使用下面的代码和搜索条件:
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();%>
【问题讨论】:
-
不相关,但是:不要将这样的 SQL 代码放在 JSP 中——尤其是不获取连接。为此使用连接池。 JSP 应该仅包含演示代码,绝不包含 Java 代码,绝对绝不包含 SQL 代码。
标签: jsp jdbc oracle11g prepared-statement