Qt - GUI 数据库编程

Posted

技术标签:

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

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

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

谁能告诉我该怎么做?

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

【问题讨论】:

见***.com/questions/ask,到目前为止你的努力是什么? 您是否阅读过QDateTimeEdit,请在您的问题中显示您用于访问数据库和插入数据的代码。表格的定义也会对您有所帮助。 【参考方案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 特别是当他们很酷的时候:)

【讨论】:

以上是关于Qt - GUI 数据库编程的主要内容,如果未能解决你的问题,请参考以下文章

QT tcp 编程 【在线等】

Qt多线程编程总结(所有GUI对象都是线程不安全的)

初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

QT编程,如何在GUI界面上一直显示系统时钟??

GUI 编程 —— QT 的 QSlider 鼠标点击定位问题

C++ 或 Python 作为 GUI 编程的起点?