问答详情
源自:2-9 JDBC实战---搭建视图层(下)

jdbc相关问题

        Map<String, Object> param = new HashMap<String, Object>();
        param.put("name", "godname");
        param.put("rela", "like");
        String str = "小美";
        param.put("value", str);

为什么这样写会出现错误???

提问者:静以修身淡以明志 2016-03-25 01:01

个回答

  • 酱油fight
    2016-03-25 22:07:40
    已采纳

    if(params!=null&&params.size()>0){
    			for (int i = 0; i < params.size(); i++) {
    				Map<String, Object> map=params.get(i);
    				sb.append(" and  "+map.get("name")+" "+map.get("rela")+" "+?+" ");
    			}
    		}
    		
    		PreparedStatement ptmt=conn.prepareStatement(sb.toString());
    		ptmt.setString(5, map.get("value"));

    在之前写map.get("value")的地方,换成'?',然后使用

    ptmt.setString(5, map.get("value"));

    对'?'位置进行赋值

  • 酱油fight
    2016-03-25 22:09:32

    ptmt.setString(1, map.get("value"));

    这里应该是1哈,刚才回复的代码里是5,那个复制的,忘记改了

  • 酱油fight
    2016-03-25 16:20:53

     param.put("name", "godname");
            param.put("rela", "like");
            String str = "小美";
            param.put("value", str);

    构造出来的条件是  :godname like 小美    这里小美是字符串,所以要用单引号。

    你说param.put("value","'小美'")没错是因为这里面已经用单引号引起来了。去掉一样会报错。

  • 酱油fight
    2016-03-25 13:59:02

    这个代码我试了,没报错啊。你说的错误是什么内容,方便贴出来么