sqlite: Fix MSVC integer conversion warnings

Change-Id: I58ab6a8d7787abce5b0f73562eb53f40e39c8186
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Friedemann Kleint 2020-12-18 17:32:45 +01:00
parent 2b9a9cfddd
commit 7f02071503

View File

@ -383,12 +383,13 @@ bool QSQLiteResult::prepare(const QString &query)
setSelect(false);
const void *pzTail = NULL;
const auto size = int((query.size() + 1) * sizeof(QChar));
#if (SQLITE_VERSION_NUMBER >= 3003011)
int res = sqlite3_prepare16_v2(d->drv_d_func()->access, query.constData(), (query.size() + 1) * sizeof(QChar),
int res = sqlite3_prepare16_v2(d->drv_d_func()->access, query.constData(), size,
&d->stmt, &pzTail);
#else
int res = sqlite3_prepare16(d->access, query.constData(), (query.size() + 1) * sizeof(QChar),
int res = sqlite3_prepare16(d->access, query.constData(), size,
&d->stmt, &pzTail);
#endif
@ -519,27 +520,31 @@ bool QSQLiteResult::exec()
const QDateTime dateTime = value.toDateTime();
const QString str = dateTime.toString(Qt::ISODateWithMs);
res = sqlite3_bind_text16(d->stmt, i + 1, str.utf16(),
str.size() * sizeof(ushort), SQLITE_TRANSIENT);
int(str.size() * sizeof(ushort)),
SQLITE_TRANSIENT);
break;
}
case QMetaType::QTime: {
const QTime time = value.toTime();
const QString str = time.toString(u"hh:mm:ss.zzz");
res = sqlite3_bind_text16(d->stmt, i + 1, str.utf16(),
str.size() * sizeof(ushort), SQLITE_TRANSIENT);
int(str.size() * sizeof(ushort)),
SQLITE_TRANSIENT);
break;
}
case QMetaType::QString: {
// lifetime of string == lifetime of its qvariant
const QString *str = static_cast<const QString*>(value.constData());
res = sqlite3_bind_text16(d->stmt, i + 1, str->utf16(),
(str->size()) * sizeof(QChar), SQLITE_STATIC);
int(str->size()) * sizeof(QChar),
SQLITE_STATIC);
break; }
default: {
QString str = value.toString();
// SQLITE_TRANSIENT makes sure that sqlite buffers the data
res = sqlite3_bind_text16(d->stmt, i + 1, str.utf16(),
(str.size()) * sizeof(QChar), SQLITE_TRANSIENT);
int(str.size()) * sizeof(QChar),
SQLITE_TRANSIENT);
break; }
}
}