I am using ado C++ for MSSQL database operation.
one of my table contains numeric value. column is numeric(38,0).
when I try to get value in _variant_t datatype it throw exception.
(code works if value is small like 5 or 6 digit)
DB MSSQL 2022 , using visual studio 2022
exception is
Error
Code = 80040e21
Description = Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
sample code
string cmd = "SELECT* FROM [pubs].[dbo].[sample] ";
_CommandPtr pCmd = NULL;
_ConnectionPtr pConnection = NULL;
_RecordsetPtr rec = NULL;
try
{
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
TESTHR(rec.CreateInstance(__uuidof(Recordset)));
FieldsPtr pFldLoop = NULL;
pConnection->Open(strCnn, "", "", adConnectUnspecified);
pCmd->PutRefActiveConnection(pConnection);
pCmd->CommandText = cmd.c_str();
rec = pCmd->Execute(NULL, NULL, adCmdText);
pFldLoop = rec->GetFields();
_variant_t index;
index.vt = VT_I2;
index.iVal = 0;
_variant_t t1 = pFldLoop->GetItem(index)->GetValue(); //exception here
pConnection->Close();
}
catch (_com_error& e)
{
PrintComError(e);
}