准备好的声明不会逃避撇号
我正在使用从hibernate获取的JDBC连接对象来执行浴更新,我这样做是因为我需要使用MySql ON DUPLICATEfunction。 但是,当试图插入时,我无法插入说字符串有特殊字符,
Session session = sessionFactory.openSession(); PreparedStatement pstm = null; Connection conn = session.connection(); try { IRKeyWordTweet record = null; conn.setAutoCommit(false); for (Iterator itrList = statusToInsert.iterator(); itrList.hasNext();) { try { record = (IRKeyWordTweet) itrList.next(); pstm = (PreparedStatement) conn.prepareStatement("INSERT QUERY"); System.err.println(record.getTwtText()); //tweetId pstm.setLong(1, record.getTweetId()); Setters For Prepared statement.... pstm.addBatch(); int[] updateCounts = pstm.executeBatch(); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { log.error("Exception Occured",e); } finally { try { pstm.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } session.close(); }
可能是什么导致了这个?
要转义单引号,可以使用JDBC的转义序列。
Statement statement = statement.executeQuery( "SELECT * FROM DATA_TABLE WHERE COLUMN1 LIKE 'Having\'s Quotes%' {escape '\'}");
{ escape '\'}
通知JDBC驱动程序将'\'
字符转换为特定于数据库的转义字符。
这里有用的链接
此外,如果你使用PreparedStatement,你不必逃避!
PreparedStatment ps = conn.prepareStatement("SELECT * FROM DATA_TABLE WHERE COLUMN1 LIKE ?%"); ps.setString(1, "Having's Quotes");
- 集成了spring 3,hibernate 3,maven和mysql
- 为什么在添加元素以设置映射多对多时,hibernate从连接表中删除行?
- 使用JPA Criteria API进行分页的总行数
- Hibernate无法启动
- 通过JPA注释更改类层次结构分支中的inheritance策略
- 使用Java中的hibernate从数据库填充combobox
- Hibernate:org.hibernate.LazyInitializationException:无法初始化代理 – 没有会话
- 如何使用Hibernate Context会话创建Generic DAO类
- 如何在不更改注释的情况下禁用Hibernate中某些特定实体的二级缓存