Я вызываю SQLGetData (), чтобы получить значение поля. Это прекрасно работает как 32-разрядное приложение, но оно уничтожает стек как 64-разрядное.
Странно то, что SQLLEN # определен как SQLINTEGER, поэтому они одно и то же. Оказывается, они оба длинные типы.
unsigned long Field::asUnsignedLong() const
{
unsigned long result;
SQLINTEGER sizeNeeded = 0;
// Trashes the stack around sizeNeeded...
if(!SQL_SUCCEEDED(SQLGetData(_statement, _columnIndex, SQL_C_ULONG, &result, sizeof(result), &sizeNeeded)))
{
throw std::runtime_error(getError(SQL_HANDLE_STMT, _statement));
}
return result;
}
Почему Visual Studio не может конвертировать SQLLEN * в SQLINTEGER *? И когда я принудительно использую явное приведение, почему стек поврежден?
Спасибо за любую помощь!