Sybase 8.0 使用了text 字段,
使用 
int ordinal = reader.GetOrdinal(name);
long size = reader.GetBytes(ordinal, 0, null, 0,0);
Byte[] buffer = new Byte[size];
reader.GetBytes(ordinal, 0, buffer, 0, buffer.Length);
 Encoding rd = Encoding.GetEncoding("gb2312"); 获取值,总是报 无法将类型为“System.String”的对象强制转换为类型“System.Byte[]”。
可是使用getString,getchars 无法获取到值,不知什么原因,请各位高手帮帮忙!!!谢谢!!!

解决方案 »

  1.   

    text 字段 会直接放到 string里吧. 应该不用当成byte[]处理
      

  2.   

     
                  string  oldHtml  =  GetYourGB2312Html();    //                
                    Encoding  encoding;                
                    encoding  =  System.Text.Encoding.GetEncoding( "GB2312 "); 
                    //  string  >  bytes 
                    byte[]  bytes  =  encoding.GetBytes(oldHtml); 
                    encoding  =  System.Text.Encoding.UTF8; 
                    //  bytes  >  string 
                    string  newOldHtml  =  encoding.GetString(bytes); 
                    //Response.Write(newOldHtml); 
    这样就可以把gb2312转成utf8了
      

  3.   

    既然提示为System.String了,那么肯定要用getString方法了,或者只有通过reader[name]来获取Object值。如果无法获取到值,那就需要找其它原因了。
      

  4.   

    使用reader.GetString(),无法获取到值,是“”字符串:
      

  5.   

    回复;(太阳之火) 
    数据库是有值得,并且信息量很大,在数据库中查询也是有显示的,如果把字段类型改成varchar 是可以取出来的,但是要求必须要用text类型
      

  6.   

    可能是Sysbase的数据库连接驱动的问题,也许它不支持text类型数据,一般不支持的类型就无法读出内容。
      

  7.   


    使用的是sybase oledb provider,应该是支持text类型数据的!!