String name = new String(request.getParameter("ZY").getBytes("ISO-8859-1"), "UTF-8"); //System.out.print(name); if (name == null || name.isEmpty()) { %> <a href="SouSuo.jsp">请输入中药名称,点击返回重新输入</a> <% }else{ Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = SQLConn.openDB(); stmt = conn.createStatement(); String sql = "select ZYName,YLName,YDY,YX,GX,ZhongYao.ZZ as ZZ from Yaolei,ZhongYao where Yaolei.YLID=ZhongYao.YLID and ZYName like ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "'" + name + " ’ "); rs = pstmt.executeQuery(); int count = 0; if(rs.next()){ while (rs.next()) { 输入正确的字符串,显示rs.next()为空,数据库对应字段为char型,怎么解决
时间: 2024-03-04 22:48:18 浏览: 19
在设置 PreparedStatement 的参数时,你的代码中在输入的字符串前后添加了单引号,这可能会导致查询语句无法正常执行。因为在使用 PreparedStatement 时,会自动对参数进行转义和引号添加,无需手动添加。如果你需要进行模糊匹配,可以使用通配符 `%` 来表示任意字符。例如:
```
pstmt.setString(1, "%" + name + "%");
```
这样就可以在输入的字符串前后添加通配符 `%`,从而实现模糊匹配。另外,你在代码中调用了两次 `rs.next()` 方法,第一次执行了一次,第二次时就会出现空指针异常。如果你需要遍历结果集中的所有数据,可以使用一个 while 循环,例如:
```
while (rs.next()) {
// 处理每一行数据
}
```
在处理完第一行数据后,`rs.next()` 方法会自动将指针移动到下一行数据,直到没有更多数据为止。
相关问题
String name=new String(req.getParameter("name").getBytes(),"ISO-8859-1","UTF-8");应该怎么改
这段代码主要是将从请求参数中获取的字符串转换成UTF-8编码格式的字符串。但是它的实现方式不太正确,应该进行以下改进:
1. 使用URLDecoder对请求参数进行解码,并指定解码的字符集为UTF-8:
```
String name = URLDecoder.decode(req.getParameter("name"), "UTF-8");
```
2. 如果URLDecoder解码无效,则可以使用getBytes方法将ISO-8859-1字符集编码的字符串转换成UTF-8编码格式的字符串:
```
String name = new String(req.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
```
这样就可以正确地将请求参数中的字符串转换成UTF-8编码格式的字符串了。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String username = new String(request.getParameter("username").getBytes("ISO-8859-1"), "GBK"); String filePath = new String(request.getParameter("filePath").getBytes("ISO-8859-1"), "GB2312"); String fileName = new String(request.getParameter("fileName").getBytes("ISO-8859-1"), "GB2312"); //String path = "/user/hadoop/zhangsan/"; String path = "/user/fxb/favor/" + username + "/"; }
根据您提供的代码片段,您正在使用HttpServletRequest对象的getParameter方法来获取URL参数。在这种情况下,如果getParameter方法返回null,可能是以下原因之一导致的:
1. 参数未正确传递:请确保在URL中正确传递了名为"username"、"filePath"和"fileName"的参数。
2. 参数编码问题:您正在使用getBytes方法将参数从ISO-8859-1编码转换为GBK或GB2312编码。请确保编码转换正确,并且与请求参数的实际编码一致。
3. 参数名称错误:请检查参数名称是否正确拼写,并且与URL中的参数名称完全匹配。
请注意,您在代码中给出的路径变量path没有被使用,如果您希望使用该路径,请确保在适当的位置使用它。
如果问题仍然存在,请提供更多关于请求和响应的细节,以便我们更好地帮助您解决问题。