使用
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 无法获取到值,不知什么原因,请各位高手帮帮忙!!!谢谢!!!
9 个解决方案
#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
那里因为数据库里没有值吧
#6
回复;(太阳之火)
数据库是有值得,并且信息量很大,在数据库中查询也是有显示的,如果把字段类型改成varchar 是可以取出来的,但是要求必须要用text类型
数据库是有值得,并且信息量很大,在数据库中查询也是有显示的,如果把字段类型改成varchar 是可以取出来的,但是要求必须要用text类型
#7
sysbase 不太懂,帮你顶了
#8
可能是Sysbase的数据库连接驱动的问题,也许它不支持text类型数据,一般不支持的类型就无法读出内容。
#9
使用的是sybase oledb provider,应该是支持text类型数据的!!
#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
那里因为数据库里没有值吧
#6
回复;(太阳之火)
数据库是有值得,并且信息量很大,在数据库中查询也是有显示的,如果把字段类型改成varchar 是可以取出来的,但是要求必须要用text类型
数据库是有值得,并且信息量很大,在数据库中查询也是有显示的,如果把字段类型改成varchar 是可以取出来的,但是要求必须要用text类型
#7
sysbase 不太懂,帮你顶了
#8
可能是Sysbase的数据库连接驱动的问题,也许它不支持text类型数据,一般不支持的类型就无法读出内容。
#9
使用的是sybase oledb provider,应该是支持text类型数据的!!