我正在尝试使用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
我现在尝试将其作为参数化查询,已经读过它将允许在没有编码问题的情况下复制字符串。那没起效。这是使用参数的另一个版本的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 :(得分:0)
因此,您从Gridview中提取了一些字符串,到目前为止,您“按原样”使用这些字符串来构建SQL语句(或者为参数化数据库命令设置参数值)。现在,如果不是“原样”使用它们而不是首先解码它们会发生什么 - 例如将它们传递给HttpUtility.HtmlDecode(...)
方法? (有关详细信息,请参阅this MSDN page。)