public List<user> findByStr(String str) {

PreparedStatement pstmt = null;
DBUtil dbUtil = null;
    ResultSet rs=null;
    String sql = "SELECT * FROM test3 WHERE NAME LIKE '%"+?+"%'";
user user = new user();
List<user> list = new ArrayList<user>();
 
try {
dbUtil = new DBUtil();
pstmt = dbUtil.getCon().prepareStatement(sql);
pstmt.setString(1,str);
rs=pstmt.executeQuery();
        
    while(rs.next()){
int id = rs.getInt("OPERATOR_ID");
String name = rs.getString("NAME");
String password = rs.getString("PASSWORD");
int status = rs.getInt("STATUS");
user.setOperator_id(id);
user.setName(name);
user.setPassword(password);
user.setStatus(status);
list.add(user);


}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
dbUtil.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
      

       return list;

}

解决方案 »

  1.   

    String sql = "SELECT * FROM test3 WHERE NAME LIKE '%"+?+"%'";
    报错 在线等答案
      

  2.   

       String sql = "SELECT * FROM test3 WHERE NAME LIKE %?%";这样是不是对呢?
      

  3.   

    String sql = "SELECT * FROM test3 WHERE NAME LIKE '%?%'"
      

  4.   

    4楼正解!
    或者你也可以
    String sql = "SELECT * FROM test3 WHERE NAME LIKE ?";pstmt.setString(1,"%"+str+"%");
      

  5.   

    String sql = "SELECT * FROM test3 WHERE NAME LIKE ?";
    ....
    pstmt.setString(1,"%"+str+"%");
      

  6.   

    <table>
    <tr>
    <td>帐号</td><td>姓名</td><td>密码</td><td>状态</td><td>删除</td><td>修改</td>
    </tr>
    <c:forEach  var="list"  items="${users}" varStatus="st"> <tr bgcolor="lightblue"> <td>${list.operator_id}</td><td>${list.name}</td><td>${list.password}</td><td>${list.status}</td><td>删除</td><td>修改</td></tr>
    </c:forEach>
    </table>
      

  7.   

    forEach  输出结果总是重复一个值  
    在线急等
    foreach  出了什么问题啊 
    ???????????在线急等
      

  8.   

    foreach是顺序循环,看循环输出的方法
      

  9.   

    String sql = "SELECT * FROM test3 WHERE NAME LIKE ?";pstmt.setString(1,"%"+str+"%");
    恩,赞成这个