2017-02-28 169 views
0

我写一个方法来存储导航字符串,但该字符串是这样的:如何在数据库中存储“”?

"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\\" 
+1

,改成'转义\\\'。 –

+0

@Steve Smith,如何将“\”转换为“\\”?如果我有字符串(“data \ 510000RS \ Other \”) – lme

+0

你以什么方式“拥有”那个字符串?请注意''data \ 510000RS \ Other \“'不是一个有效的java表达式。是你的*实际*字符串数据\ 510000RS \其他\? – luk2302

回答

2

你需要逃避,如果它面前的另一个斜线:

“data \\ 510000RS \\ Other \\”

如果它在一个程序中,不要这样做,这是不安全的!使用预准备的语句在JAVA

实施例:https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

+0

如何将“data \ 510000RS \ Other \”转换为“data \\ 510000RS \\ Other \\”? – lme

+0

@lme在哪种编程语言? – Tom

+0

我使用java @Tom – lme

0

反斜线符号被用作数据块转义字符。 您可以使用两个反斜杠,而不是一个用于生成结果或插入记录。

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

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

正如有人指出,你可以通过转义用双斜杠替换所有slasshes的slah(\)解决它。

我建议使用的apache.commons.lang

org.apache.commons.lang; 

StringEscapeUtils.escapeSql(String str) 

这种方法不仅会逃脱斜线也是其它字符造成的问题,同时插入DB

相关问题