可以使用JetSetColumns来替换JET_coltypLongBinary值吗?

时间:2011-01-29 12:20:09

标签: database winapi extensible-storage-engine

如果我调用JetSetColumn()来替换JET_coltypLongBinary值的内容,则操作按预期工作 - 值被替换

但是,如果我调用JetSetColumns(),则不会替换值 - 而是保留其旧值。奇怪的是其他列(不长列)按预期更新。没有错误返回。

JET_coltypLongText会发生同样的行为 - 让我想知道JetSetColumns()是否不能用于长值?

提示?

1 个答案:

答案 0 :(得分:1)

您可能没有在JET_SETCOLUMN结构中设置itagSequence。这是API的非显而易见的“特征”。

“使用ESENT时常见的编程错误是在更新列值时使用itagSequence为0。默认情况下,JET_SETINFO和JET_SETCOLUMN结构初始化为itagSequence为0.这适用于插入(必须创建新实例)但是在更新记录时,默认行为是创建列的新实例而不是更新现有列。要覆盖现有列,必须设置itagSequence,即使该列是单值的。

http://managedesent.codeplex.com/wikipage?title=MultiValueTutorial