2011-10-24 15 views
0

我想從SQL Express表導出一些數據到使用VB.net進行訪問。數據在SQL中正確顯示,例如,小度物體的溫度和Farenhiet或Celsius的字母F或C.在HTML代碼中,這個字符當然是° =「&#176」,這就是我的訪問表中出現的內容。轉換之前插入stmt的html符號代碼stmt

如何獲得插入語句正確傳遞此符號?我有成千上萬的記錄,這適用於幾百個數據庫中的每個數百個數據庫,我正在運行此轉換。

我從Gridview和.aspx .net網頁讀取數據,然後使用帶有Access OLEDB連接的插入查詢。

SQLString1 = "INSERT INTO tblFornStrings (Str_ID, Code, Str_Name, Srt_Text, Lng_Text, Alt_Text) " 
          SQLString1 = SQLString1 & "VALUES ('" & StrngID & "', " 
          SQLString1 = SQLString1 & "'" & Code & "'," 
          SQLString1 = SQLString1 & "'" & Str_Name & "'," 
          SQLString1 = SQLString1 & "'" & newText1 & "'," 
          SQLString1 = SQLString1 & "'" & newText2 & "'," 
          SQLString1 = SQLString1 & "'" & newText3 & "')" 
          ' SQLString1 = SQLString1 & "'" & tblSource & "')" 

          Dim dbCommand1 = New OleDbCommand(SQLString1, pConn) 

          pConn.Open() 
          dbCommand1.ExecuteNonQuery() 
          dbCommand1 = Nothing 

這些都是有數據的兩個字段,newText1 = Srt_Text,newText2 = Lng_Text Showing html codes in access table

我現在試圖讓這個參數化查詢,看了這將允許字符串無需編碼問題即可複製。它不起作用。這是使用參數的INSERT代碼的另一個版本。

Dim SqlString As String = "INSERT INTO Strings (Str_ID, Code, Str_Name, Srt_Text, Lng_Text, Alt_Text) Values (?,?,?,?,?,?)" 
Using cmd As New OleDbCommand(SqlString, pConn) 
    cmd.CommandType = CommandType.Text 
    cmd.Parameters.AddWithValue("Str_ID", StrngID) 
    cmd.Parameters.AddWithValue("Code", Code) 
    cmd.Parameters.AddWithValue("Str_Name", Str_Name) 
    cmd.Parameters.AddWithValue("Srt_Text", newText1) 
    cmd.Parameters.AddWithValue("Lng_Text", newText2) 
    cmd.Parameters.AddWithValue("Alt_Text", newText3) 

    pConn.Open() 
    cmd.ExecuteNonQuery() 
    pConn.Close() 
End Using 

輸出與顯示在第一個代碼塊輸出圖形中的輸出相同。

感謝您的任何建議。

+0

要麼這是一個技巧性問題,或者對Replace函數(在將源於HTML的字符串值插入到SQL語句中之前)的簡單調用應執行此操作,如下所示:** Replace(newText1 ,「°」,Chr(176))** – Yarik

+0

@Yarik,謝謝你的回覆,不是一個詭計的問題。您的解決方案適用於一種語言。問題是代碼需要能夠支持可能添加到網站的任何可能的語言。因此,您的代碼對於說法語以及任何有此問題的所有代碼都很有用。突然之間,泰國人得到了補充,意大利人又出現了一套全新的例外情況。任何想法如何避免必須回去並添加替換stmts?謝謝, – htm11h

+0

嗯......自從我不得不面對國際化問題已經很長時間了,所以我希望你能原諒我這樣問:不同語言對這個問題的影響究竟如何?我認爲這個問題僅僅是關於所謂的HTML編碼:在實際的HTML文檔中,一些字符是HTML編碼的,這就是它們如何從Gridview出來,所以你需要找到一種方法來在錄製之前對它們進行HTML解碼所有的數據進入數據庫。 (待續) – Yarik

回答

0

所以你有一些從Gridview中提取的字符串,到目前爲止,你使用這些字符串「按原樣」來構建SQL語句(或爲參數化數據庫命令設置參數值)。現在,如果不是按照原樣使用它們,而是先解碼它們,通過將它們傳遞給HttpUtility.HtmlDecode(...)方法? (請參閱this MSDN page以瞭解更多詳細信息。)