2012-03-12 70 views
0

我在使用MYSQL在java中創建文件時遇到了一個奇怪的問題。單引號在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和文件的創建作爲拉吉 「SEK」 自動HAR。

請幫我解決這個問題。

問候,

拉吉

+0

您可以發佈您使用的所有代碼嗎? – 2012-03-13 06:07:18

+0

你可以驗證,它不是兩個單引號? SQL不會經常使用兩個單引號來掩蓋撇號? – 2012-03-13 10:22:19

+0

嗨@user未知,是它被兩個單引號替換,而不是雙引號......我該如何解決這個問題 – user27 2012-03-13 11:32:14

回答

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