Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JDBC preparedStatement在JSP中不工作_Jsp_Jdbc_Oracle11g_Prepared Statement - Fatal编程技术网

JDBC preparedStatement在JSP中不工作

JDBC preparedStatement在JSP中不工作,jsp,jdbc,oracle11g,prepared-statement,Jsp,Jdbc,Oracle11g,Prepared Statement,如果查询为静态且无参数,则PreparedStatement工作正常,例如: select * from RWEMP; 但如果我在搜索条件下使用以下代码: SELECT * FROM RWEMP WHERE ENAME= ? 它没有显示任何内容,只是显示表标题 <FORM METHOD="get"> <INPUT TYPE="text" NAME="cond" SIZE=50> </FORM> <br> <br>

如果查询为静态且无参数,则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();
%>

将PreparedStatement的查询参数绑定代码更改为

stat.setString(1, value); // no quotes
您需要搜索value变量包含的内容,而不是它的名称值本身。

将PreparedStatement的查询参数绑定代码更改为

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

您需要搜索value变量包含的内容,而不是它的名称和值本身。

不相关,但是:不要将类似的SQL代码放在JSP中,尤其是不要获取连接。为此使用连接池。JSP应该只包含表示代码,从不包含Java代码,绝对不包含SQL代码。不相关,但是:不要将SQL代码像那样放在JSP中,尤其是不要获取连接。为此使用连接池。JSP应该只包含表示代码,决不包含Java代码,决不包含SQL代码。