mssql text字段不能显示的解决方法

在项目中,有时会遇到之前可以显示sql text字段,但是改了SQL语句或又再原表后加入了新字段后,sql text字段不能显示的问题,着实让人头疼。

最简单的一个技巧就是,把所有ntext,text这样的二进制长对象在设计表、试图和编写SQL时,放在最后,就可以正常的用UD调用并显示了。

例如:
设计留言簿时留言内容(假设字段名为contents)肯定要设置成ntext或text.
那么把这个字段设计为该表最后一个字段,之后
Select * from tablename
这样就可调用了。
或者:
Select id, name, ...., contents form tablename
一定要把ntext、text这种字段放在最后,否则就不能调用。

你说的以前可以显示现在不能显示,我估计是你后改了SQL语句或又再原表后加入了新字段,导致ntext、text不是表中最后的字段,所以出问题!

这个问题曾经困扰过我一段时间,后来不经意间摸索出来

原因

SQL Server 的 "Text" 和 "ntext" 数据类型是数据库里的 BLOB(2进制大对象)一个 BLOB 是一个大文件. 典型的 BlOB 是一张图片或一个声音文件,由于它们的尺寸,必须用特殊的方式处理 (例如: 上传, 下载 或者存放到一个数据库)

解决方法

当使用 UltraDev 的 ASP server (ADO) 对 Microsoft SQL Server 的 BLOB 域做动作时,
你的 SQL statements 的 "SELECT" 子句必须在读所有非 BLOB 列后再 读 BLOB 类型列的值.
为了安全, 你还应当维持在数据库里列的从左到右的次序. 如果你选择在你的数据集的最后两列放两个 BLOB 列, 必须先读前一个再读后一个.不要颠倒次序.

也就是说,我们不是要注意在数据库表中"Text" 或"ntext" 类型的字段排在最后,而是要注意"SELECT" 子句中"Text" 或"ntext" 类型的字段排在最后。如果有一列以上的"Text" 或"ntext" 类型的字段,要注意它们在数据库表中的顺序。

有话要说