-1
        PreparedStatement stmt=con.prepareStatement("select * from test where testname like '?%'");
        stmt.setString(1,keyword);
        rset=stmt.executeQuery();

        while(rset.next()){
            out.println(rset.getString(1));
            out.println(rset.getString(2));
            out.println(rset.getString(3));
            out.println(rset.getString(4));


        }

我使用 tomcat 作为服务器,异常是:java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0)。

在这里,我在表单中输入 testname,并使用 getParameter(); 方法将此值分配给字符串关键字。我想使用“喜欢”,以便我只能检索选定的测试名称。

4

3 回答 3

1

问号不能用引号引起来。尝试这个:

PreparedStatement stmt=con.prepareStatement(
    "select * from test where testname like concat(?, '%')");

或者,您可以这样做:

PreparedStatement stmt=con.prepareStatement(
    "select * from test where testname like ?");
stmt.setString(1,keyword + "%");
于 2013-02-23T09:55:08.033 回答
0

你不能有一个在报价中,它不起作用。一个简单的解决方法是在查询字符串中附加实际值。

String keyword = "parametervalue";
String query = "select * from test where testname like '" + keyword +"%'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
于 2013-02-23T10:06:49.690 回答
0

将您的查询更改为

PreparedStatement stmt=con.prepareStatement("select * from test where testname  LIKE '%' || ? || '%' "); 

http://www.coderanch.com/t/502785/JDBC/databases/preparedstatement

于 2013-02-23T09:55:41.890 回答