2013-01-17 123 views
2

我有html文件作爲String,我想使用更新查詢將其插入MySQL數據庫。我嘗試這樣做:如何使用JDBC在MySQL數據庫中保存html文件?

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 

這是somwhere內部HTML - 也許我不能只是引用HTML與"",並因爲它包含很多特殊字符,報價也將其插入:

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

,但我得到的異常以下 - 那我怎麼能插入它?我應該以某種方式編碼嗎?

+0

你必須逃離變量'html'。 – hjpotter92

回答

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

謝謝,這是我正在尋找,但你有你的代碼中的小錯誤:而不是'int num = st.executeUpdate(query);'應該有'int num = st.executeUpdate();' – user606521

+0

@ user606521你是受歡迎的,並感謝您指出它,它基本上是複製/粘貼thingy .. :) – PermGenError

0

您應該使用PreparedStatement構造,因爲您的HTML字符串可能包含引號或雙重qoutes。閱讀更多here

0

你應該使用PreparedStatement,但我寧願將路徑保存在MySQL中,而不是保存文件。

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(); 
相關問題