2017-01-16 91 views
0

我想在Oracle數據庫表中執行INSERT操作。在Oracle數據庫表中存儲字符串

樣本串我想插入是一個HTTP請求:

a=5&b=hello&date=2016/12/31 

此字符串被存儲如下:

a=5&b=hello&date=2016%2F12%2F31 

即,使用URL編碼的字符,而不是UTF-8編碼的串。

此前,我的字符串按預期以UTF-8格式存儲。 所以,我能夠檢索和處理它使用

string.split('/') 

問題是什麼?我的開發環境中可以改變什麼? 這是DBMS方面的問題嗎?

感謝

編輯:

public static String func(HttpServletRequest request) { 

    String date = request.getParameter("date"); 

    date.split("/");  IT WORKS!!! 
} 

public static String func(String url_stored_into_DB) { 

    String date = getDateFromUrl(url_stored_into_DB); 

    date.split("/");  IT DOESN'T WORK!!! 
         since it was stored with %2F 
} 

的URL存儲到數據庫:

//HttpServletRequest request comes in to the server 
String url = request.toString().substring(beginIndex, endIndex); 
stmt = conn.prepareStatement("INSERT INTO table (URL) VALUES (?)"); 
stmt.setString(1, url); 
stmt.executeQuery(); 
stmt.close(); 
+0

第二個字符串看起來像您在瀏覽器URL中看到的那樣編碼。你能向我們展示相關的Java代碼嗎? –

+0

@TimBiegeleisen當HTTP請求進入服務器時,一切正常:例如,我可以獲取日期參數並在其上使用分割函數。如果我將url存儲到數據庫中,它將與轉義字符一起存儲,所以分割函數將不起作用 – Fab

+0

顯示保存到數據庫的代碼? –

回答

4

你試圖分裂使用不包含 '/' 字符的文本字符串人物。當然這是行不通的。爲什麼我說你的字符串不包含'/'字符? 因爲它是URL編碼的。 URL編碼的目的是確保字符串不包含URL中含有的各種字符。

您需要先將URL解碼。像這樣的東西應該可以做到。

String date = getDateFromUrl(url_stored_into_DB); 
date = java.net.URLDecoder.decode(date, "UTF-8"); 

date.split ("/"); 
相關問題