如何使用JDBC在MySQL DB中保存html文件?

时间:2013-01-17 11:20:49

标签: java mysql sql jdbc

我有html文件为String,我想使用更新查询将其插入MySQL数据库。我试过这个:

Statement st = connection.createStatement();
String query = "UPDATE orders SET status='ready', html='"+html+"' WHERE id='123'";
int num = st.executeUpdate(query);

但我得到以下例外:

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 'zglosBladWindow').ck_window.showCenter('this');" href="#">zg?o? b??d na stronie<' at line 1

这是HTML内部的一个地方 - 可能我只能用""引用html并插入它,因为它包含许多特殊字符和引号 - 所以我如何插入它?我应该以某种方式编码吗?

4 个答案:

答案 0 :(得分:7)

我建议你使用PreparedStatement而不是Statement。

String query = "UPDATE orders SET status=?, html=? WHERE id=?";
PreparedStatement stmnt = conn.PreparedStatement(query);
stmnt.setString(1, yourtext);
....
int num = st.executeUpdate();

答案 1 :(得分:0)

您应该使用PreparedStatement构造,因为您的HTML字符串可能包含引号或双重qoutes。阅读更多here

答案 2 :(得分:0)

您应该使用PreparedStatement,但我宁愿在MySQL中保存路径而不是保存文件。

答案 3 :(得分:0)

你应该使用这样的东西,

StringBuilder contentBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new FileReader("mypage.html"));
String str;
while ((str = in.readLine()) != null) {
    contentBuilder.append(str);
}
in.close();
} catch (IOException e) {
}
String content = contentBuilder.toString();