java插入数据库字符串拼接_java中PreparedStatement解决需转义字符向数据库中插入时的转义问题 | 学步园...
簡單的執行如下語句去做數據庫的插入操作是有問題的!它處理不了單引號,雙引號等需要轉義的字符的插入問題!
String sql = "insert into emailOriginal(id,date,subject,source,target" +
") value(\""
+ vo.getId() + "\",\""
+ vo.getDate()+"\",\""
+ vo.getSubject()+"\",\""
+ vo.getSource()+"\",\""
+ vo.getTarget()+"\");";
。。。
pstmt = dbc.getConnection().prepareStatement(sql);
。。。
pstmt.execute(sql);
會有如下錯誤:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'notional" stuff
經過查找發現是插入“nation”時,雙引號沒有經過轉義!
現在修改成使用PreparedStatement,用?預處理查詢條件,會避免上述簡單的字符串拼接造成的轉義問題。
String sql = "insert into emailOriginal(id,date,subject,source,target" +
") value(?,?,?,?,?);";
PreparedStatement pstmt = null;
try {
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, vo.getId());
pstmt.setString(2, vo.getDate());
pstmt.setString(3, vo.getSubject());
pstmt.setString(4, vo.getSource());
pstmt.setString(5, vo.getTarget());
pstmt.execute();
//pstmt.execute(sql);
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
其中的pstmt.setString(1, vo.getId());
會幫助字符串轉義。
可以插入如下的記錄了:
+------+------+--------+--------+----------+
| id ? | date | source | target | subject ?|
+------+------+--------+--------+----------+
| id ? | date | source | target | "subject |
| id ? | date | source | target | 'subject |
+------+------+--------+--------+----------+
總結
以上是生活随笔為你收集整理的java插入数据库字符串拼接_java中PreparedStatement解决需转义字符向数据库中插入时的转义问题 | 学步园...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.0.22_mysql-5
- 下一篇: 当Typora开始收费,开源免费的Mar