SQLSERVER中TEXT字段超过DataColumn默认长度怎么办?

soyer2001 2010-06-10 12:09:16
我读取数据库记录至DataSet中的时候抛出异常

非预期的byte格式
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Exception: 非预期的byte格式

源错误:


行 102: using (SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, cnn))
行 103: {
行 104: command.Fill(ds, "ds");
行 105: return ds;
行 106: }

错误在104行

经排除法确定是一个TEXT类型的字段超过了DataColumn默认长度
有人提到把DataColumn的MaxMaxLength改为-1就可以了
如:ds.Tables[0].Columns[0].MaxLength = -1;
但问题是Fill之前DataSet还是等于null,我怎么设置DataColumn的MaxMaxLength呢?
...全文
362 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
soyer2001 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zzyhuian06142 的回复:]
引用 6 楼 soyer2001 的回复:
引用 5 楼 zzyhuian06142 的回复:
把Text的值截取到最大的就行了

如何截取呢?好像DataColumn默认长度是2000个汉字?
刚刚搜到一篇文章说:
要获取dataset中datacolumn的长度,如果你是用dataadapter.fill()方法填充datadet的话,要在执行fill()方法之前执行dataada……
[/Quote]
算是一个解决办法,不过我也没试你这个方法了,其实最好的方式还是我在六楼找到那个。
Nick黄 2010-06-10
  • 打赏
  • 举报
回复
悲剧!
soyer2001 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangyang8908 的回复:]
超过长度的话,应该是数据库表字段设的长度不够。从数据库把字段的类型改成NVARCHAR(MAX)至少能支持4000个汉字,应该够用了。。
[/Quote]
数据库是外部提供的,我无法改变它的表结构啊。
yangyang8908 2010-06-10
  • 打赏
  • 举报
回复
超过长度的话,应该是数据库表字段设的长度不够。从数据库把字段的类型改成NVARCHAR(MAX)至少能支持4000个汉字,应该够用了。。
APP开发王 2010-06-10
  • 打赏
  • 举报
回复

友情帮顶下!顺便学习学习!
zzyhuian06142 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 soyer2001 的回复:]
引用 5 楼 zzyhuian06142 的回复:
把Text的值截取到最大的就行了

如何截取呢?好像DataColumn默认长度是2000个汉字?
刚刚搜到一篇文章说:
要获取dataset中datacolumn的长度,如果你是用dataadapter.fill()方法填充datadet的话,要在执行fill()方法之前执行dataadapter.MissingSchemaActio……
[/Quote]

比如你要把Column1的值截取的话
在查询语句的时候就截取了
Select SubString(Column1,1,4000) as Column1 From .....
soyer2001 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zzyhuian06142 的回复:]
把Text的值截取到最大的就行了
[/Quote]
如何截取呢?好像DataColumn默认长度是2000个汉字?
刚刚搜到一篇文章说:
要获取dataset中datacolumn的长度,如果你是用dataadapter.fill()方法填充datadet的话,要在执行fill()方法之前执行dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

这样,你的dataset中的列的最大长度maxlength就会自动赋值了.
尊重来源地址:http://hi.baidu.com/shashadu/blog/item/2921706dd9e044ff43169494.html

zzyhuian06142 2010-06-10
  • 打赏
  • 举报
回复
把Text的值截取到最大的就行了
soyer2001 2010-06-10
  • 打赏
  • 举报
回复
不管杯具不杯具,总要找个办法解决的。由于字段比较多,我也不想自定义一个DataTable然后再Fill。如果实在没办法,估计也只好这样了。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧