C# Microsoft索引服务Cisso.dll互操作库:4字节整数的上限?

C# Microsoft索引服务Cisso.dll互操作库:4字节整数的上限?,c#,.net,adodb,indexing-service,dialect2,C#,.net,Adodb,Indexing Service,Dialect2,此问题使用C#/.NET程序中的Microsoft()和Cisso.dll互操作库的 我们的索引中有定义为vt_i8数据类型(8字节)的列,但是interop库的方法总是返回一个包含4字节整数的数字列的记录集,截断超过2147483648范围限制的任何内容 理想情况下,我们需要从互操作库中提取C#longSystem.Int64(8字节),而不是C#intSystem.Int32(4字节) 下面的代码示例(主要提供给jog内存)使用Cisso.dll获取记录集并填充数据表,用截断的整数返回数据表

此问题使用C#/.NET程序中的Microsoft()和Cisso.dll互操作库的

我们的索引中有定义为
vt_i8
数据类型(8字节)的列,但是interop库的方法总是返回一个包含4字节整数的数字列的记录集,截断超过2147483648范围限制的任何内容

理想情况下,我们需要从互操作库中提取C#
long
System.Int64(8字节),而不是C#
int
System.Int32(4字节)

下面的代码示例(主要提供给jog内存)使用Cisso.dll获取记录集并填充数据表,用截断的整数返回数据表

CissoQueryClass cqc = new Cisso.CissoQueryClass();
RecordSet rs = new RecordSet();
cqc.Columns = "Rank, DocTitle, VPath, Filename, Characterization,Write";
// ... setup ...
var myDs = new DataSet();
oldDbAdapter.Fill(myDs, cqc.CreateRecordSet("nonsequential"), "IXResults");
return myDs;
我们试过cqc。方法,处理数据类型等,但没有用-在截断整数的行为中看不到任何更改

我想知道这个整数截断是否是CISSO interop库的一个限制,或者是否可以从中提取更大的整数值,而我们只是不知道如何做?

我相信这里一定有人遇到过类似的问题。这一次谷歌搜索互联网的细节非常少



我们根据索引中的数据找到了一种解决方法:我们能够从另一个字符串字段中提取所需的内容,并从中解析出数字。这不是理想的解决办法

是的,我和你一样被困住了。看起来最大oledb列长度是一个32位的ULONG(oledb.h),但是ixsso实现将其视为有符号的。我首先想到可以通过将数据源装载到VS的数据库连接中来获取表模式。那时我发现了搜索的“自定义”查询功能。那条路线就到此为止

然后,我尝试将.net RCW向下移动到实现中,但我找不到ixsso.dll的调试符号,因此无法获得足够小的asm块来进行诊断

最好的猜测是DefineColumns(原始COM接口)功能将值限制在底层模式存储中,对此您无能为力。这是你已经推断出来的,出于类似的原因


祝你好运。很抱歉,我们无法破解这个。我很高兴它已经贬值了….

您是为Win2000及更早版本的客户编写的吗?我问这个问题的原因是,我注意到XP降低了它的价值。这是因为我们正在使用的一款产品——Ektron——基于不推荐的技术,我们需要使用它。这太糟糕了。我有一些细节,我正在寻找答案,但我需要创建一个XP虚拟机。这花了相当多的空闲时间,但这是一个很好的拼图游戏。听起来很有前途。至少有50分处于危险之中,希望这能让努力工作变得值得。你也尝试过Cisso.CissoQueryExClass吗?