2012-11-30 20 views
0

我必須在SQL Server 2005中使用具有TEXT數據類型的列來存儲我需要用換行符和製表符來格式化的字符串,例如。TEXT的SQL Server數據類型不保持格式

在調用存儲過程之前,我添加了一個斷點來查看我在VS2010中的文本可視化器中發送的文本,並且所有格式都正是我想要的,但是當我將該單元放入數據庫,並複製出數據,格式化會丟失。根據我所看到的,每次在字符串中出現換行符或製表符時,文本數據類型都會用空格替換它。對於換行符,我使用vbNewline和製表符我使用vbTab或Xml.Formatting.Indented

值得注意的是,我不能改變列的數據類型,因爲它只是一個我必須使用的表一個特定的目的。

有關如何使用數據類型的文本在數據庫中正確格式化的任何建議?

例:

SQL表腳本代表表格:

CREATE TABLE [dbo].[FooLog](
    [FooID] [int] IDENTITY(1,1) NOT NULL, 
    [FooInfo] [text] NULL) 

的StringBuilder代碼:

Dim sb As New StringBuilder() 

sb.AppendFormat("{0}{1}", "Some text", vbNewLine) 
sb.AppendLine("Some foo bar data") 
sb.AppendLine(String.Format("{0}data{1}{0}some more data", vbTab, vbNewLine)) 

Dim stringToStoreInFooInfo As String = sb.ToString() 

存儲在DB:

db.AddInParameter(cmd, "FooInfo", SqlDbType.Text, stringToStoreInFooInfo) 

我不讀它回來與c ode目前...我用Ctrl-C將它複製出單元格或右鍵單擊「複製」

+2

我建議你創建一個這樣的小例子,然後發佈它。只需要一個ID列和TEXT字段的表格,以及用於填充它並將其讀回的簡單代碼。 –

+0

你寫過「當我走進數據庫中的單元格,並複製出數據,格式化會丟失」。你如何「去細胞」,以及如何複製數據? – Diego

+0

@Diego我去MSSQLMS,查詢記錄,突出顯示的單元格,並使用Ctrl + C或右鍵單擊「複製」 – wakurth

回答

4

它確實保留了格式化的正確性,您將通過複製出SSMS而丟失格式細胞。

一旦你有代碼拉回文本,你應該仍然有格式。

例如,如果您在SSMS中運行以下內容,則會失去換行符。它切換爲我認爲的其他空白字符的空格。

Select 
' 
This 
    is 
some fomatted 
text 
' 
+0

有趣。不幸的是,我不能在沒有編寫程序UI的情況下從數據庫中獲取它。它用於記錄異常,現在,我們只需要手動將它們從sql中提取出來。我只需要一點時間就可以將它封裝在UI中。謝謝。 – wakurth