我正在使用Qt GUI使用C ++在MySQL中保存数据。
我正在使用QDateTimeEdit
小部件。无论用户在QDateTimeEdit
的GUI中更改了什么值,都应该在MySQL中插入。
谁能告诉我怎么做?
如何从QDateTimeEdit
访问值并以QString
等正确格式转换并使用MySQL查询将其插入数据库?
答案 0 :(得分:2)
另一种方法是不将它转换为QString,而是让驱动程序为您完成。如果你期望在转换中有一些精确度,那么这可能会更好,其他情况可能会更糟:
QDateTime date = ui->dateTimeEdit->dateTime();
QSqlQuery query(myDatabase);
query.prepare("INSERT INTO my_table (id, date) "
" VALUES (:id, :date)");
query.bindValue(":id", 1001);
query.bindValue(":date", date);
query.exec();
QSqlQuery::bindValue()函数将获取QDateTime并将其作为QVariant
传递,然后驱动程序应该知道如何将QVariant::DateTime转换为数据库理解的正确字符串。
答案 1 :(得分:0)
关于第二部分“如何获取价值”:
你在某种程度上在代码中创建了QDateTimeEdit的对象并将其放在某个布局上。通常它将是带有名称的指针,例如mpDTPicker。
QDateTimeEdit * mpDTPicker = new QDateTimeEdit();
//place mpDTPicker on layout.
对于访问当前时间,我们需要使用方法dateTime:
//User actions with date -> emitted signal -> execute slot with our logic
{
QDateTime momentum = mpDTPicker->dateTime();
// So here we need convert QDateTime to QString and we will use [toString Method](http://doc.qt.io/qt-4.8/qdatetime.html#toString)
QString result_string = momentum.toString("dd:mm:yy");
QDebug() << result_string;
}
所以这就是将QDateTime转换为QString。 关于如何获得该用户更改DateTimeEdit值的第一部分是另一个问题。
关于第三部分如何将它存储在mysql数据库中,一切都取决于你的表的结构。但通常情况下,它可以通过简单的query来解决:
QSqlQuery query;
QString mQuerry = "INSERT INTO mytable (id, date) VALUES (0, \"" +result_string "\" )";
query.exec(mQuerry);
请READ DOCS,特别是当它们如此酷的时候:)