【问题标题】:Qt - GUI Database programmingQt - GUI 数据库编程
【发布时间】:2015-12-03 12:54:39
【问题描述】:

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

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

谁能告诉我该怎么做?

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

【问题讨论】:

  • stackoverflow.com/questions/ask,到目前为止你的努力是什么?
  • 您是否阅读过QDateTimeEdit,请在您的问题中显示您用于访问数据库和插入数据的代码。表格的定义也会对您有所帮助。

标签: c++ mysql qt qtgui


【解决方案1】:

另一种方法是不将其转换为 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 转换为数据库可以理解的正确字符串。

【讨论】:

    【解决方案2】:

    关于第二部分“如何获取值”:

    您以某种方式在代码中创建了 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 特别是当他们很酷的时候:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多