2015-05-20 93 views
0

的值是(文字):如何向數據庫中插入值並保留換行符?

drivers. 
CDL license. 
Least.

它存儲在一個稱爲ReturnedText變量。

我想更新數據庫中的記錄並保留換行。

它被修改後,似乎在顯示它的頁面:

drivers. CDL license. Least

我試圖通過HtmlAttributeEncodeHtmlEncode保存格式:

Dim desc As SqlParameter = New SqlParameter("@formatDesc", SqlDbType.NText) 
desc.Value = System.Web.HttpUtility.HtmlAttributeEncode(ReturnedText) 

Dim Cmd As SqlCommand = New SqlCommand(" 
             update dbo.Positions 
             set description = @formatDesc where id = 123456" 
             ,Conn) 

Cmd.Parameters.Add(desc) 

Cmd.ExecuteNonQuery() 

但是,當我顯示它在我的頁面中,它顯示:

drivers. CDL license. Least

如何將其保存我在文本可視化器中看到的格式?

+0

我沒有任何問題插入字符串到SQL與換行符他們似乎總是出來就好了我們可以看到您正在使用的代碼插入和讀取數據數據庫中的字段是什麼數據類型 –

+1

你應該停止使用ntext數據類型,它已被棄用,因爲它是一個痛苦的處理,你應該使用nv archar(最大值)。 –

回答

2

關鍵的一句是在這裏(重點煤礦):

但是,當我在頁面顯示出來,它表明:

這,加上HtmlEncodeHtmlAttributeEncode()引用,表明你想要在HTML頁面中使用。這非常重要:HTML將所有非實體空格視爲相同。一個製表符是一個回車是一個換行是一個空格是兩個空格。所有的瀏覽器都會在文字之間留出空隙。如果您在瀏覽器中查看文檔的源代碼,您將看到保留了換行符,並且僅由html提供。

因此,要解決此問題,必須使用Replace()函數來替換\n字符與<br/>HtmlAttributeEncode()是解決這個問題一個很好的嘗試,但它only handles a few specific characters

的HtmlAttributeEncode方法轉換隻引號(「),和號(&)和左尖括號(<)到相應的字符實體

1

我不認爲HtmlAttributeEncode會爲你處理這些換行符。它會執行引號,&符號,左括號等。

此外,最好保存數據原樣,並且只在需要時(在HTML中輸出時)對其進行編碼。有一天,數據可能需要其他的東西,在報告中使用,等等。當你輸出的網絡使用,你可以在這一點上換行符爲html。