我想從MS Access轉換到DerbyDB。然而,一些VARCHAR領域具有「特殊」字符,如換行符,製表符,百分比標記,外文字符等在插入derbyDB之前搜索'特殊'字符的java字符串varchar字段
我創建了一個快速的方法...
public String charCheck(String s)
{
errLog.add(1, "converting string from " + s);
s.replaceAll("'", "''");//an apostrophe is escaped with an apostrophy in Derby...
s.replaceAll("%", "\\%");//a percent sign
s.replaceAll("\\s+n", " ");//whitespace characters (newlines and tabs etc)
s.replaceAll("/", "\\/");//the 'divide' \ character,
s.replaceAll("<", "\\<");//mathematical symbol less than
s.replaceAll(">", "\\>");//mathematical symbol greater than
errLog.add(1, "to " + s);
return s;
}//end method
它在我奔跑時,我確定我需要一個varchar(或long varchar)數據類型。奇怪的是,我的錯誤日誌打印出來的消息,但在輸出空白字符似乎並沒有改變(即製表符和換行符,不要轉換爲簡單的空間),字符串中的任何撇號都不會被替換。
此方法的輸出樣本產生以下內容。
converting string from 2. FIN DE L’ESSAI
to 2. FIN DE L’ESSAI
所以字符串仍保持明顯的不變,這打亂derbyDB當我運行的INSERT語句,還我沒有找到關於轉義序列的任何明顯的文檔中插入多個記錄到一個表,我想用一個聲明再加入逃逸關鍵字後,即
stmt.execute("{call "+ sqlInsertStatement +"}{escape '" + escapeCharacter +"'");
我也是從文檔讀取的逃逸關鍵字可能無法在上面的語句有用的,如果是的話我怎麼能て
我需要知道去哪裏排序我得到的插入錯誤。
如果我複製和過去的INSERT語句直接進入IJ,然後取出特殊字符的記錄將插入細,我只是不明白爲什麼它沒有被一審轉換。
我也試圖與周圍的雙引號VARCHAR和LONGVARCHAR領域,但同樣德比踢了一個錯誤,指出雙引號被發現!
我想爲您答疑解惑,因爲我覺得像我這麼近......提前
我只是想到這一點,並相應地改變了我的方法,目前正在測試... – DaveM
行,所以這是我忘卻的字符串是不可變的......現在嘗試進行排序爲什麼德比不喜歡他們,並相應地調整。我會問另一個問題 – DaveM