今天需要从数据库中去一些数据,然后整理,想到只要是繁琐的工作都可以用程序来解决,就写了一个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后面不加单引号竟然可以成功运行,数据库也不会报错,现在记下来,防止后面忘记。有大神看见,能否告知下我答案。