Что добавилось
- класс CRecordset, который, работая в связке с CSql::MoveNext, дает возможность более удобного использования результатов выборки. Пример использования:
TCHAR* strSQL =
_T("select t.fld1, t.fld2 from dbo.sometable t");
if( oSql.DoSqlQuery(strSQL))
{
CRecordset oRS;
while(oSql.MoveNext(oRS))
{
SFieldValue* pFld1 =
oRS[0];
SFieldValue* pFld2 =
oRS["fld2"];
...
}
}
этот класс также дает
возможность
получить кол-во полей в запросе;
получить указатель на поле (SFieldValue)
по номеру поля, а так же по имени поля, в случае неудачи (неверный индекс или
имя) возвращается null.
- в класс SFieldValue добавлены
функции, позволяющие
получать строковое представление поля (GetStringPresentation),
искючение составлют поля времени-даты, байнари;
устанавливать ссылку на внешние данные (SetRef,
SetRefVarBin), эти фича требуется для выполнения
параметризованных запросов (перечень функций, устанавливающих ссылки будет
пополняться по мере востребования).
- в классе CSql добавились функции
коннекта по имени сетевого сервера и базы данных
(Trusted_Connect2(...));
поиск индекса поля по имени поля (GetColumnNmb(...));
переход на следующую запись (MoveNext(...));
функция выполнения параметризованного запроса (DoBindQueryEx(...)),
которая работает на основе класса CRecordset.
Пример выполнения запроса
CRecordset oRS[2];
oRS[0].SetRef(oTimeStamp);
oRS[1].SetRefVarBin(pMd5, 16);
oSql.DoBindQueryEx(_T("insert into sometable (date,
md5) values(?,?)"), oRS);
- добавилась поддержка юникода (TCHAR);
- добавилась поддержка автоматического линкования без необходимости отдельного указания линковщику имени библиотеки.
Что изменилось
- изменен прототип
typedef void (*BINDPROC) (void*
/*UserValue*/, SWORD /*ParamID*/, SWORD* /*pLocalType*/, SWORD*
/*pSqlType*/,SDWORD* /*pValueSize*/);
typedef void (*PUTDATA) (void* /*UserValue*/, SWORD
/*ParamID*/, PVOID* /*Buffer*/, SDWORD* /*pBufferSize*/);
заменен первый параметр с DWORD на void*, а так же заменены все соответсвующие параметры, например в CSql::DoBindQuery.
- при вызове деструктора ~CSql вызывается DropConnection().