http://topic.csdn.net/t/20030227/10/1471452.html

解决方案 »

  1.   

    找到一点点ASP的资料,希望会给你一点点启发
    **********************************************************
    老是遇到TEXT类型和NTEXT类型的字段读不出来的问题.
    今天弄了半天,又查了资料,终于把这个问题搞定了首先我们应该了解这两个类型的字段到底有什么不同:
    虽然看起这他们是叫TEXT,但他不是用来保存文本的,实际上是用来保存文件,和IMAGE类型一样的,一般用来保存MIME类型的数据.
    而我把它用来保存新闻的主体内容了,这样能存的更多.结果老是读取不出来......我用的是ADO连接,在读取数据时,因为习惯了以前ASP的写法,用conn.execute()来读取,,,这种读取对存MIME类型的字段是无效的,,,
    所以改成rs.open的方法来读取就好了....记于此,以做学习.那么这两种执行方法在本质上有什么不同?在处理MIME类型上有什么不同呢?
    个人认为用conn.execute()方式得到的RS里对MIME类型应该只是得到了一个索引,而用rs.open()的方式得到的应该是MIME类型的内容吧!
    对两种方式得到的RS的字节大小做个比较应该能说明结果.那么在应用时,在仅列出索引,标题什么的时,用conn.execute(). 在要显示完整内容时用rs.open(),我想这样能提高不少性能吧!
    ******************************************************************************************
      

  2.   

    版本换成php5了也不能正确读取ntext类型的表呀~~苦呀~~难道PHP就这么差?
      

  3.   

    在网上找了一下午找到一个处理方案:
    把PHP4换成PHP5,调整php.ini里面的参数,但是还是不行,不知道怎么做才是正道呀~~
    ; Valid range 0 - 2147483647.  Default = 4096.
    mssql.textlimit = 1073741823; Valid range 0 - 2147483647.  Default = 4096.
    mssql.textsize = 1073741823
      

  4.   

    又看到资料,使用Convert(text, fieldname)进行转换后也行,
    但是怎么知道哪个字段是ntext类型的呢?在sql2000中有个叫syscolumns的表,里面的type不知道是不是对应字段类型的呀?如何取出?还希望与大家讨论下~
      

  5.   

    SELECT    字段名称=a.name,  字段类型=b.name
     FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id  
       and d.xtype='U' and  d.name='yourtable'
      

  6.   

    在网上找了一下午找到一个处理方案:
    把PHP4换成PHP5,调整php.ini里面的参数,但是还是不行,不知道怎么做才是正道呀~~
    ; Valid range 0 - 2147483647.  Default = 4096.
    mssql.textlimit = 1073741823; Valid range 0 - 2147483647.  Default = 4096.
    mssql.textsize = 1073741823
    -----------------------------------------
    这个好像只是针对text的,而不是针对ntext的
      

  7.   

    php是不能将ntext数据或仅使用Unicode排序规则的Unicode数据发送到客户端的
      

  8.   

    “由于文章内容较多,text都不够用,所我用了ntext类型”
    这根本是一个错误的决定!在 sql server 中,text和ntext都只最大使用64k空间
    text和ntext的区别在于,前者原样保存内容,而后者将做unicode编码转换注意:unicode编码的内容在大多数场合下是不可显的(或表现为乱码),使用时需要做编码转换
    所以不是php不能读取ntext的内容,而是你没有做编码转换“版本换成php5了也不能正确读取ntext类型的表呀~~苦呀~~难道PHP就这么差?”
    这更是错误的结论!
    1、php是开源的,并没有强大的资金后盾。所以不可能去购买sql server的开发权
    2、sql server从未公布过开发文档,能写出mssql函数组已经是相当的不容易了
    3、sql server的标新立异也使得他的兼容性下降。比如大多数据库都设定char类型不大于255字节,而他却偏允许4k大小