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 数据库编程的主要内容,如果未能解决你的问题,请参考以下文章
初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)