如何让 SQL 2008 R2 将嵌入在字符串中的 CR/LF(所以 2 个段落,或者可能是多个 CR/LF)存储到以编程方式插入 vb.net 的记录的字段中?并非所有记录都有 CR/LF,所以我不能只将它们添加到每条记录中。+Char(13)+char(10) 我可以用 charArrary 拆分。
更新:这似乎是实际问题:XML 解析器将 CR/LF 转换为 LF 只是为了保持一致性。我正在将数据传入和传出 Web 服务,这似乎是 CR 丢失的地方。这是 W3 标准。
这些字符串来自 Access DB,并且 CR/LF 已包含在记录的多段字段中。我想直接将它们传递进去,但 SQL 正在将它们转换为空格。
在 VS Sql 编辑器中,记录似乎存储 CR/LF 应该驻留的 20:20 Hex。该字符串实际上应该有 Char(13) & Char(10) 或 0x0D0A 但它没有。
即使直接通过 SSMS 或 VS SQL 编辑器编辑或插入记录,我也看到了相同的结果。这些记录最初是通过 Web 服务提交的,但我已将其删除以进行测试。我读到 XML 解析器也会将 CR/LF 转换为 LF,只是为了保持一致性。
我无法显示实际的查询。但是适配器是在此处构建并填充并通过 Web 服务调用传递回我的应用程序的。此过程适用于除包含 CRLF 的记录之外的所有记录。
Dim strConnection As String
strConnection = ConfigurationManager.ConnectionStrings("ConnectionStringMyDB").ConnectionString
Dim myConnection As New SqlConnection(strConnection)
Dim myCommand As New SqlCommand(strSQL, myConnection)
' Access file name
myCommand.Parameters.AddWithValue("@dbName", OleDbType.VarChar).Value = dbName
' Table in Access DB
myCommand.Parameters.AddWithValue("@tableName", OleDbType.VarChar).Value = tableName
myConnection.Open()
' Create the DataAdapter
Dim myDataAdapter As New SqlDataAdapter()
myDataAdapter.SelectCommand = myCommand
' Populate the DataSet and close the connection
Dim myDataSet As New DataSet()
myDataAdapter.Fill(myDataSet)
myConnection.Close()
Return myDataSet
将数据集分配给表后在我的应用程序中进行处理。
For Each row As DataRow In myTable.Rows
Dim stringVal As String = row(columnName).ToString()
' Eventually added this to see that the row was adding 2 spaces after the carriage return
Dim cstringVal() As Char = stringVal.ToCharArray
Dim csearchValue() As Char = searchValue.ToCharArray
' Also added this code
Dim line_array1 As [String]() = stringVal.Split(vbCr & vbLf.ToCharArray())
Dim line_array2 As [String]() = searchValue.Split(vbCr & vbLf.ToCharArray())
' line_Array2 consistently IDs the vbCRLF, line_array1 never does.
' Originally tried
If row(columnName) = searchValue Then
return True
End If
' Tried this
If stringVal = searchValue Then
Return True
End If
' And this
If String.Compare(stringVal, searchValue, False) = 0 Then
Return True
End If
Next
Return False
谢谢