随记——记我一个不明白的BUG

来源:互联网 发布:淘宝店铺图标在线制作 编辑:程序博客网 时间:2024/06/05 18:18
今天需要从数据库中去一些数据,然后整理,想到只要是繁琐的工作都可以用程序来解决,就写了一个java查询。

可是写到数据库连接的时候出现了一个bug,下面上代码

String sql = "select * from ldcodemapping a where a.remark like ? order by cast(a.basiccode as number)";        String name = "专业";        String string = "%?%";        name = string.replace("?", name);        System.out.println(name);        OraclePreparedStatement pstmt = (OraclePreparedStatement)conn.prepareStatement(sql);        //DBUtil.addParams(pstmt, name);        pstmt.setString(1, name);        System.out.println(pstmt.getOriginalSql());        ResultSet query = pstmt.executeQuery();        System.out.println(pstmt.getOriginalSql());        while (query.next()) {            String basiccode = query.getString("BASICCODE");            String basiccodename = query.getString("BASICCODENAME");            System.out.println(basiccode + "\t" +basiccodename);        }

不知道为什么like ‘%?%’就不能进行参数的添加,报无效的列索引,所以我选择了直接拼接一部分的字符串。可是我拼接完后,运行不报错了,但是查询为空,可我拿来sql去运行并不为空,用Statement也不为空。
最后发现like后面不加单引号竟然可以成功运行,数据库也不会报错,现在记下来,防止后面忘记。有大神看见,能否告知下我答案。

原创粉丝点击