SQL/MySQL: merge toMySqlDate (which returned MYSQL_TIME) into exec()
It was the only place that called it. Makes the code slightly uglier, but removes a function that returned a raw pointer. More importantly, it gets the actual type from QVariant, without relying on it internally converting from QDateTime to QDate and QTime, or failing to do so in some cases. This is going to be needed for the next commit. Pick-to: 6.6 6.5 Change-Id: I6818d78a57394e37857bfffd17bbcd3f5057eadc Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de> (cherry picked from commit b5d73636d27f1bba87980cf1bac6feb1ebd6360b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
af41847af5
commit
10c7706656
@ -832,28 +832,6 @@ void QMYSQLResult::virtual_hook(int id, void *data)
|
||||
QSqlResult::virtual_hook(id, data);
|
||||
}
|
||||
|
||||
static QT_MYSQL_TIME *toMySqlDate(QDate date, QTime time, int type)
|
||||
{
|
||||
Q_ASSERT(type == QMetaType::QTime || type == QMetaType::QDate
|
||||
|| type == QMetaType::QDateTime);
|
||||
|
||||
auto myTime = new QT_MYSQL_TIME{};
|
||||
|
||||
if (type == QMetaType::QTime || type == QMetaType::QDateTime) {
|
||||
myTime->hour = time.hour();
|
||||
myTime->minute = time.minute();
|
||||
myTime->second = time.second();
|
||||
myTime->second_part = time.msec() * 1000;
|
||||
}
|
||||
if (type == QMetaType::QDate || type == QMetaType::QDateTime) {
|
||||
myTime->year = date.year();
|
||||
myTime->month = date.month();
|
||||
myTime->day = date.day();
|
||||
}
|
||||
|
||||
return myTime;
|
||||
}
|
||||
|
||||
bool QMYSQLResult::prepare(const QString& query)
|
||||
{
|
||||
Q_D(QMYSQLResult);
|
||||
@ -943,25 +921,39 @@ bool QMYSQLResult::exec()
|
||||
case QMetaType::QTime:
|
||||
case QMetaType::QDate:
|
||||
case QMetaType::QDateTime: {
|
||||
QT_MYSQL_TIME *myTime = toMySqlDate(val.toDate(), val.toTime(), val.userType());
|
||||
auto myTime = new QT_MYSQL_TIME{};
|
||||
timeVector.append(myTime);
|
||||
|
||||
currBind->buffer = myTime;
|
||||
switch (val.userType()) {
|
||||
case QMetaType::QTime:
|
||||
|
||||
QDate date;
|
||||
QTime time;
|
||||
int type = val.userType();
|
||||
if (type == QMetaType::QTime) {
|
||||
time = val.toTime();
|
||||
currBind->buffer_type = MYSQL_TYPE_TIME;
|
||||
myTime->time_type = MYSQL_TIMESTAMP_TIME;
|
||||
break;
|
||||
case QMetaType::QDate:
|
||||
} else if (type == QMetaType::QDate) {
|
||||
date = val.toDate();
|
||||
currBind->buffer_type = MYSQL_TYPE_DATE;
|
||||
myTime->time_type = MYSQL_TIMESTAMP_DATE;
|
||||
break;
|
||||
case QMetaType::QDateTime:
|
||||
} else {
|
||||
QDateTime dt = val.toDateTime();
|
||||
date = dt.date();
|
||||
time = dt.time();
|
||||
currBind->buffer_type = MYSQL_TYPE_DATETIME;
|
||||
myTime->time_type = MYSQL_TIMESTAMP_DATETIME;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == QMetaType::QTime || type == QMetaType::QDateTime) {
|
||||
myTime->hour = time.hour();
|
||||
myTime->minute = time.minute();
|
||||
myTime->second = time.second();
|
||||
myTime->second_part = time.msec() * 1000;
|
||||
}
|
||||
if (type == QMetaType::QDate || type == QMetaType::QDateTime) {
|
||||
myTime->year = date.year();
|
||||
myTime->month = date.month();
|
||||
myTime->day = date.day();
|
||||
}
|
||||
currBind->buffer_length = sizeof(QT_MYSQL_TIME);
|
||||
currBind->length = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user