Qt - GUI数据库编程

时间:2015-12-03 12:54:39

标签: c++ mysql qt qtgui

我正在使用Qt GUI使用C ++在MySQL中保存数据。

我正在使用QDateTimeEdit小部件。无论用户在QDateTimeEdit的GUI中更改了什么值,都应该在MySQL中插入。

谁能告诉我怎么做?

如何从QDateTimeEdit访问值并以QString等正确格式转换并使用MySQL查询将其插入数据库?

2 个答案:

答案 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,特别是当它们如此酷的时候:)