1

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

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

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

尖端?

4

1 回答 1

1

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

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

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

于 2011-01-30T22:49:22.313 回答