mysql - 如何将包含双引号的字符串添加到sql数据库?

标签 mysql sql database jdbc

我想使用 JDBC 向我的 sql 数据库添加一个字符串。但问题是,只要字符串包含双引号,sql 命令就会被完全不同地解释,并抛出“你的 SQL 语法有错误;检查与你的 MySQL 服务器版本对应的手册以获得正确的语法” ”

例如, String ssql = "INSERT INTO tableName VALUES (\""+ string + "\")";

如果 string = "abc", then sql = INSERT INTO tableName VALUES ("abc")
但是如果 string = "ab\"cd", 那么 sql = INSERT INTO tableName VALUES ("ab"c")


因此,对于包含双引号的字符串,sql 命令的解释完全不同。

如何将这样的字符串添加到数据库中。

附言。我负担不起将双引号更改为单引号。并且可以有其他技巧来添加这样的字符串,但我想知道是否真的没有直接添加这样的字符串的方法。

最佳答案

您需要转义字符串值以在查询中生成字符串文字。

当您使用引号分隔字符串时:

  • 字符串中的反斜杠 (\) 应替换为两个反斜杠。

  • 字符串中的引号 (") 应替换为反斜杠和引号。

如果您使用撇号 (') 来分隔字符串(这在 SQL 中更常见),您将转义撇号而不是引号。

如果可能,您应该使用参数化查询,而不是将值连接到查询中。

关于mysql - 如何将包含双引号的字符串添加到sql数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24698040/

相关文章:

php - 无法在codeigniter中连接多个数据库

mysql - 如何在 SQL 中操作 select 查询的结果?

python - Django 自动转换日期时间属性

sql - 使用 SQL 获取文件扩展名?

database - 将 xml 嵌套到表中

database - 为 Sybase 表和索引生成 DDL

php - 将 csv 文件中的数据添加到 mysql 数据库中,避免在 php 中重复

sql - 将数据类型 varchar 转换为 float 时出错

条件为真时的总计数和计数的SQL

java - 数据库管理器类的设计模式