如果我调用JetSetColumn()来替换JET_coltypLongBinary值的内容,则操作按预期工作 - 值被替换
但是,如果我调用JetSetColumns(),则不会替换值 - 而是保留其旧值。奇怪的是其他列(不长列)按预期更新。没有错误返回。
JET_coltypLongText会发生同样的行为 - 让我想知道JetSetColumns()是否不能用于长值?
提示?
答案 0 :(得分:1)
您可能没有在JET_SETCOLUMN结构中设置itagSequence。这是API的非显而易见的“特征”。
“使用ESENT时常见的编程错误是在更新列值时使用itagSequence为0。默认情况下,JET_SETINFO和JET_SETCOLUMN结构初始化为itagSequence为0.这适用于插入(必须创建新实例)但是在更新记录时,默认行为是创建列的新实例而不是更新现有列。要覆盖现有列,必须设置itagSequence,即使该列是单值的。
http://managedesent.codeplex.com/wikipage?title=MultiValueTutorial