2012-11-30 19 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