我想從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
我現在試圖讓這個參數化查詢,看了這將允許字符串無需編碼問題即可複製。它不起作用。這是使用參數的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
輸出與顯示在第一個代碼塊輸出圖形中的輸出相同。
感謝您的任何建議。
要麼這是一個技巧性問題,或者對Replace函數(在將源於HTML的字符串值插入到SQL語句中之前)的簡單調用應執行此操作,如下所示:** Replace(newText1 ,「°」,Chr(176))** – Yarik
@Yarik,謝謝你的回覆,不是一個詭計的問題。您的解決方案適用於一種語言。問題是代碼需要能夠支持可能添加到網站的任何可能的語言。因此,您的代碼對於說法語以及任何有此問題的所有代碼都很有用。突然之間,泰國人得到了補充,意大利人又出現了一套全新的例外情況。任何想法如何避免必須回去並添加替換stmts?謝謝, – htm11h
嗯......自從我不得不面對國際化問題已經很長時間了,所以我希望你能原諒我這樣問:不同語言對這個問題的影響究竟如何?我認爲這個問題僅僅是關於所謂的HTML編碼:在實際的HTML文檔中,一些字符是HTML編碼的,這就是它們如何從Gridview出來,所以你需要找到一種方法來在錄製之前對它們進行HTML解碼所有的數據進入數據庫。 (待續) – Yarik