如何存储" \"在数据库?

时间:2017-02-28 12:49:42

标签: java mysql navicat

我写了一个方法来存储一个字符串导航,但字符串是这样的:

"data\510000RS\Other\"

所以,它崩溃了:

 [SQL] call P_A_OperReg_Bio("liaomalin", "511321199001031598", "P_1", "http:p_1......", "http://p1_url1..", "md5_p1_md51", "http://p1_url2..", "md5_p1_md52", "http://p1_url3..", "","data\510000RS\Other\", "20170202", "", @a);
SELECT @a; 
 [Err] 1064 - 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 '20170202", "", @a);
SELECT @a' at line 1

快照:

enter image description here

如何解决这个问题?

如果我有字符串:

 data\510000RS\Other\

如何将其转换为:

"data\\510000RS\\Other\\"

3 个答案:

答案 0 :(得分:2)

如果在它之前使用另一个斜杠,则需要转义:

  

"数据\\ 510000RS \\其他\\"

如果它在某个程序中,请不要这样做,这是不安全的!使用准备好的陈述。

JAVA中的示例:https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

答案 1 :(得分:0)

反斜杠用作DB中的转义字符。 你可以使用两个反斜杠,而不是一个用于产生结果或插入记录。

"data\\510000RS\\Other\\"

Insert into table Values(1, "data\\510000RS\\Other\\"

答案 2 :(得分:0)

正如其他人指出的那样,你可以通过用双斜线替换所有slasshes来逃避slah(\)来解决它。

我建议使用escapeSql(String str)的{​​{1}}。

apache.commons.lang

此方法不仅会转义斜杠,还会转换插入DB

时导致问题的其他字符