在创建文件名时,单引号将在java中自动替换为两个单引号

时间:2012-03-12 12:37:41

标签: java mysql openlaszlo

在使用MYSQL在java中创建文件时,我遇到了一个奇怪的问题。

我的代码:

String lChildSql = this.lSQLBucket.select("get.child.by.name")
                        .replace("LEFT").with(lLeft)
                        .replace("RIGHT").with(lRight)
                        .replace("LEVEL").with(lLevel + 1)
                        .replace("NAME").with(pName).get()
                    ResultSet lChildRs = lDB.Qry(lChildSql);

示例:如果我使用pName raj'sek'har创建一个文件,并将其自动创建为raj“sek”har。

请帮我解决这个问题。

此致

拉​​吉

1 个答案:

答案 0 :(得分:1)

用户未知的是这是正常的行为。这就是sql如何处理单词中的单引号(撇号)。

sql对字符串使用单引号 - 'this is a string' - 但是如果你的字符串包含单个引号,那么它将导致问题 - 'this isn't going to work' - 因为字符串“提前结束”。

所以sql做的是用两个单个撇号替换它,这是一个“转义序列”,表示实际上需要单个撇号[sic]:'this''ll work fine'

请注意,这仅用于显示。它不是“真正”替换任何东西,当你检索数据时,一切都会好的。

someone else saying the same thing