0

我有一个 32 位应用程序,它必须同时连接到 32 位和 64 位 ODBC 数据库。我看到一些 MS ODBC 函数对于 32 位和 64 位版本具有不同的签名。这似乎意味着只有 64 位应用程序可以使用 64 位索引。是这样吗?

4

2 回答 2

1

在 64 位 ODBC API 中,一些参数现在是 8 个字节,以前是 4 个字节。然而,很少与行数有关,而更多与字段的大小有关(例如,一个 lob)。您引用的 API 返回受影响的行数,并且我所知道的没有驱动程序在选择时为 SQLRowCount 设置除 -1 以外的任何内容。因此,对于 SQLRowCount,您只需要担心是否要一次更新/删除 20 亿行并且需要对这些行更改/删除的计数。如果您真的要一次更新/删除 20 亿行,您可能会遇到比是否使用 32 位/64 位 ODBC API 更大的问题。

于 2012-06-06T11:00:29.333 回答
0

首先,您不会一次获取 40 亿行。如果你这样做,奇怪的事情就会发生。第二,你说的日期类型是SLQLEN。对于 32 位驱动程序,它是一个 4 字节的 int,对于 64 位驱动程序,它是一个 8 字节的整数。但是,并非所有 64 位驱动程序都有 8 字节 SQLLEN。我亲自使用过十几个 64 位 odbc 驱动程序,其中大约 40% 仍然使用 4 字节 SQLLEN(同时,驱动程序管理器也应该有 4 字节 SQLLEN,否则,您将看到损坏的数据和内存在某些平台上到处都有错误)。

于 2012-06-06T15:33:29.747 回答