我在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());
我如何使其工作?
答案 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);
要从数据库中检索,这是因为在插入或读取时必须指定格式