如何将QTime保存在SQL Server Express表中并读回?

时间:2018-09-12 07:13:14

标签: c++ qt sql-server-express

我在SQL Server Express中有一个表,其中包含字段.tree-cell { -fx-skin: "CustomTreeCellSkin"; -fx-background-color: -fx-control-inner-background; -fx-padding: 0px; -fx-text-fill: -fx-text-inner-color; -fx-indent: 0px; } .tree-cell .label { -fx-padding: 0.0em 0.0em 0.0em 0.0em; } .tree-cell .tree-disclosure-node { -fx-padding: 0px; -fx-background-color: transparent; } .tree-cell .tree-disclosure-node .arrow { -fx-background-color: -fx-mark-color; -fx-padding: 0.0em; } name varchar(10),并且我想将timeVar time变量的值保存在QTime字段中。

这是我尝试过的:

time

但是,我得到QTime time = QTime::currentTime(); QString timeString = time.toString("hh:mm:ss"); QString query = QString("insert into timeHold(name,timeVar) values ('ABC','%2')").arg(timeString); qry->prepare(query); qry->exec();

当我从SQL Server Management Studio将值插入表中时,QSqlQuery::value: not positioned on a valid record可以正常工作。但是,令我惊讶的是,当我尝试从Management Studio中读取存储在表中的值时,我能够获得name字段,而不是time字段。

这是我用来从表中读取值的代码:

insert into timeHold values('XYZ', '12:17:35')

代码产生以下输出:

QString query = QString("select * from timeHold");

qry->prepare(query);
qry->exec();
qry->first();

int noOfRecords = qry->numRowsAffected();

do {
    qDebug() << qry->value(0).toString();
    qDebug() << qry->value(1).toString();
} while (qry->next());

我如何使其工作?

1 个答案:

答案 0 :(得分:5)

关于保存的故事,我想说arg方法不起作用,因为您要求%2,但是只有一个要替换的元素

   query = QString("insert into timeHold(name,timeVar) values ('ABC','%2')").arg(timeString);

我认为应该是

query =  QString("insert into timeHold(name,timeVar) values ('ABC','%1')").arg(timeString);

要从数据库中检索,这是因为在插入或读取时必须指定格式