在使用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。
请帮我解决这个问题。
此致
拉吉
答案 0 :(得分:1)
用户未知的是这是正常的行为。这就是sql如何处理单词中的单引号(撇号)。
sql对字符串使用单引号 - 'this is a string'
- 但是如果你的字符串包含单个引号,那么它将导致问题 - 'this isn't going to work'
- 因为字符串“提前结束”。
所以sql做的是用两个单个撇号替换它,这是一个“转义序列”,表示实际上需要单个撇号[sic]:'this''ll work fine'
。
请注意,这仅用于显示。它不是“真正”替换任何东西,当你检索数据时,一切都会好的。