Замечания о том как в Qt быть с TIMESTAMP.

Prev | Home | Next

При работе с сервером MS SQL одно из полей таблицы было сделано TIMESTAMP. Тем самым на это поле возлагались надежды, что оно будет автоматически обновляться при каждом добавлении записи или обновлении существующей записи.

SQL Server делал все что от него ожидалось. Но при попытке получить значение поля в программе в любом ожидаемом типе данных к которому первоначально делалось преобразование (QString, UInt, Double, DateTime) всегда получалось значение нуля. Выборка значений поля в MS SQL Query Analyzer показывало вполне осмысленные и ненулевые значения.

Пример кода:

....

QSqlQuery my100 = GetTimestampField();

while ( my100.next() )

{

QString szTemp5 = my100.value( 0 ).toString();

double lT5 = my100.value( 0 ).toDouble();

}

...

В конечном итоге, было выяснено что TIMESTAMP передается корректно, но только в QByteArray. Поэтому код должен быть приблизительно таким:

....

QSqlQuery my100 = GetTimestampField();

while ( my100.next() )

{

QByteArray lTBA5 = my100.value( 0 ).toByteArray();

}

...

Prev | Home | Next

© 2004 - 2006 [Slava Dubeiko | Дубейко Вячеслав] slava@dubeiko.com