【问题标题】:I want to send a string to mysql with special chars using java我想使用 java 向 mysql 发送一个带有特殊字符的字符串
【发布时间】:2013-01-11 08:47:00
【问题描述】:

我正在使用 Java 1.7 来制作如何连接到 MySQL DB 的应用程序。但是我在插入带有特殊字符(如“,\,\n”)的值时遇到了很多问题。 我正在尝试手动更改此值。 我正在使用这种方法进行更改。

public static String StringToSQL(String chain) {
    chain.replaceAll(Matcher.quoteReplacement("\\"),
            Matcher.quoteReplacement("\\\\"));
    chain.replaceAll(Matcher.quoteReplacement("\""),
            Matcher.quoteReplacement("\\\""));
    chain.replaceAll(Matcher.quoteReplacement("\n"),
            Matcher.quoteReplacement("\\n"));
    chain.replaceAll(Matcher.quoteReplacement("'"),
            Matcher.quoteReplacement("\\'"));
    return chain;
}

我想尝试改造一个像这样的链条

The cat says "meaw meaw"

进入

the cat says \"meaw meaw\"

MySql 语法没有问题

例如sql必须是

INSERT INTO AnimalSays (Phrase) VALUES ("\"Meaw Meaw\"");

但我发送

INSERT INTO AnimalSays (Phrase) VALUES (""Meaw Meaw"");

语法错误如何破坏应用程序

【问题讨论】:

  • 问题不在于使用占位符(又名准备好的语句)。请遵循适用的数据库教程并查看 bobby-tables.com,其中包括一些各种 Java 示例。

标签: java mysql query-string


【解决方案1】:

使用准备好的语句将解决您的问题。如果设置字符串参数,它将转义所有特殊字符。

http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

【讨论】:

  • 谢谢。我忘记了我要防止的是 mysql Inyection
猜你喜欢
  • 2020-11-14
  • 2018-11-08
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多