在sql insert stmt之前转换html符号代码

时间:2011-10-24 14:37:08

标签: sql vb.net ms-access

我正在尝试使用VB.net将一些数据从SQL Express表导出到Access。数据在SQL中正确显示为,例如,具有小度数对象的温度和用于Farenhiet或Celsius的字母F或C.该字符当然由html代码中的°=“&#176”表示,这是我的访问表中出现的内容。

如何让insert语句正确传递此符号?我有成千上万的记录,这适用于我在运行此转换的每个数百个DB中的大约一百个。

我从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

输出与第一个代码块输出图中显示的输出相同。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

因此,您从Gridview中提取了一些字符串,到目前为止,您“按原样”使用这些字符串来构建SQL语句(或者为参数化数据库命令设置参数值)。现在,如果不是“原样”使用它们而不是首先解码它们会发生什么 - 例如将它们传递给HttpUtility.HtmlDecode(...)方法? (有关详细信息,请参阅this MSDN page。)