本地 DB 抛出字节数组截断长度为 8000 的异常
Posted
技术标签:
【中文标题】本地 DB 抛出字节数组截断长度为 8000 的异常【英文标题】:Local DB throws Byte array truncation to a length of 8000 exception 【发布时间】:2011-12-08 13:13:28 【问题描述】:我正在尝试从 Map 控件获取快照作为 WritableBitmap,将其转换为字节数组并将其保存在本地数据库中。它工作正常(我可以将字节数组转换回图像),直到我将更改提交到数据库。此时它会抛出异常“字节数组截断到长度为 8000”。我没有找到任何关于字节数组限制的文档。有谁知道如何增加8000的限制?我的字节数组是我的模型的成员:
private byte[] _locationImage;
[Column]
public byte[] LocationImage
get return _locationImage;
set
if (_locationImage != value)
NotifyPropertyChanging("LocationImage");
_locationImage = value;
NotifyPropertyChanged("LocationImage");
【问题讨论】:
你用的是什么“数据库”? 该字段是否曾在数据库端定义为 varbinary(8000)? 【参考方案1】:如果您查看the SQL Compact docs,您会看到二进制或varbinary 字段最多可以有8000 个字节,这告诉我byte[]
列被映射到varbinary。要让它存储比这更大的数据,您需要让引擎使用image
字段类型。这可能就像像这样更新Column
属性一样简单(未经测试):
[Column(DbType="image")]
public byte[] LocationImage ...
【讨论】:
VARBINARY(MAX) 在 SQL Compact 中不可用? 很抱歉回答迟了。这正是我想要的。我没想到要查看 SQL CE 文档。谢谢。以上是关于本地 DB 抛出字节数组截断长度为 8000 的异常的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server Compact 4.0 图像列被截断为 8000
RODBC :: sqlSave()创建表,警告:在列中截断为255个字节?
RODBC::sqlSave() 创建表,警告:在列中截断为 255 个字节?
Sqlserver 报错“参数数据类型 ntext/text 对于 replace 函数的参数 1 无效”的解决方案及原理分析扩展