【问题标题】:How to storage the "\" in database?如何将“\”存储在数据库中?
【发布时间】:2017-02-28 12:49:42
【问题描述】:

我在navigation中写了一个存储字符串的方法,但是字符串是这样的:

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

【问题讨论】:

  • 转义为 `\\`。
  • @Steve Smith,如何将“\”转换为“\\”?如果我有字符串 ("data\510000RS\Other\")
  • 你以什么方式“拥有”那个字符串?请注意,"data\510000RS\Other\" 不是一个有效的 java 表达式。你的实际字符串data\510000RS\Other\?
  • 你从哪里得到那个字符串?你是在你的java源代码中写的,是一些用户输入吗?如果您使用适当的框架和/或准备好的语句,则在编写 java 代码以将 `` 放入数据库时​​,您不必做任何事情。

标签: java mysql navicat


【解决方案1】:

如果前面有另一个斜线,则需要转义:

“数据\\510000RS\\其他\\”

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

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

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    正如其他人指出的那样,您可以通过用双斜杠替换所有斜杠来转义斜杠(\)来解决它。

    我建议使用escapeSql(String str)apache.commons.lang

    org.apache.commons.lang;
    
    StringEscapeUtils.escapeSql(String str)
    

    此方法不仅会转义斜杠,还会转义其他在插入 DB 时导致问题的字符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多