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