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

标签 c++ qt sql-server-express

我在 SQL Server Express 中有一个包含字段 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();

但是,我得到 QSqlQuery::value: not positioned on a valid record .

当我从 SQL Server Management Studio 向表中插入值时,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());

代码产生以下输出:

"ABC"
"\u0017"
"world"
"\u000B"
"Mama"
"\u000B"
"Gerama"
"\u000B"

我怎样才能让它发挥作用?

最佳答案

对于保存故事,我会说 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);

从数据库中获取,要么是插入的时候要指定格式,要么是读取的时候要指定格式

关于c++ - 如何将 QTime 保存在 SQL Server Express 表中并读回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289447/

相关文章:

c++ - 结构的 QVector - 没有合适的默认构造函数可用

.net - 如何在 SQL Server Express 中存储长文本以及如何在 .NET 中使用它?

asp.net - Web 平台安装程序和 sql Express 数据库设置

c++ - 为什么 rand() 给我定义的时间间隔之外的数字? (昨天还好好的)

c++ - 如何在C++中使用createprocess在执行批处理脚本时传递具有空格的参数

c++ - Qt项目如何集成flex和bison?

c++ - 如何将 unicode 字符串转换为其 unicode 转义字符?

sql - SQL Server Express LocalDB 可以远程连接吗?

c++ - 通过小部件获取顶级窗口

c++ - 我是否在简单的 OpenMP for 循环中误用了引用变量,还是 clang 错误?