Замена символов новой строки Oracle в строке .NET - PullRequest
0 голосов
/ 28 апреля 2011

Я использую команду Oracle dbms_output.get_line для получения вывода из хранимой процедуры. Как только мой код запускает команду, я получаю результаты через строку буфера длиной 32000 байт.

Неизбежно, эта строка будет иметь разрывы строк Oracle (chr (10) и chr (13)) , которые я хотел бы заменить на Environment.NewLine , поэтому я может отображать вывод в стандартном текстовом поле Winforms.

Вот код, который я использовал - я не помню точно, где я получил команду Oracle прямо сейчас, но если я ее найду, я добавлю ссылку.

Dim cmdGetOutput As New OracleCommand("declare " & _
" l_line varchar2(255); " & _
" l_done number; " & _
" l_buffer long; " & _
"begin " & _
" loop " & _
" exit when length(l_buffer)+255 > :maxbytes OR l_done =1; " & _
" dbms_output.get_line( l_line, l_done ); " & _
" l_buffer := l_buffer || l_line || chr(10); " & _
" end loop; " & _
" :done := l_done; " & _
" :buffer := l_buffer; " & _
"end;", cnOracle)

cmdGetOutput.Parameters.Add("maxbytes", OracleType.Int16)
cmdGetOutput.Parameters("maxbytes").Value = 32000
cmdGetOutput.Parameters.Add("done", OracleType.Int16)
cmdGetOutput.Parameters("done").Direction = ParameterDirection.Output
cmdGetOutput.Parameters.Add("buffer", OracleType.LongVarChar, 32000)
cmdGetOutput.Parameters("buffer").Direction = ParameterDirection.Output

Dim strOutput As List(Of String) = New List(Of String)
Dim intStatus As Integer = 0
Try
   While True
      cmdGetOutput.ExecuteNonQuery()
      strOutput.Add(cmdGetOutput.Parameters("buffer").Value)
      If cmdGetOutput.Parameters("done").Value = 1 Then
         Exit While
      End If
   End While
Catch ex As Exception
   MsgBox(ex.Message)
Finally
   For ixLines as Integer = 0 to strOutput.Count - 1
      txtOutput.Text = txtOutput.Text & strOutput(ixLines)
   Next
End Try

Когда я запускаю это, txtOutput будет иметь прямоугольные символы в местах, где должны быть новые строки.

Спасибо за помощь, всем!

1 Ответ

0 голосов
/ 28 апреля 2011

Во-первых, этот код даже не должен компилироваться.Нельзя назначить List (of String) свойству TextBox.Text.

секунда, класс String определяет метод Replace (searchstring, replacementstring).

...