我写了一个方法来存储一个字符串导航,但字符串是这样的:
"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
快照:
如何解决这个问题?
如果我有字符串:
data\510000RS\Other\
如何将其转换为:
"data\\510000RS\\Other\\"
答案 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
时导致问题的其他字符