c++ - Qt 中的 SQL 数据库输出
问题描述
我有这样的任务:
我需要为 SQLite 数据库制作一个控制台包装。输入 ios 一个查询,输出是结果或错误
代码如下。输出有问题:所有 ID 均为 0,名称为空。建议,如何做出正确的输出。
int main()
{
QSqlDatabase myDb = QSqlDatabase::addDatabase("QSQLITE");
myDb.setDatabaseName("MyFirstDatabase.db");
if(!myDb.open()){
std::cout<< myDb.lastError().text().toStdString() << std::endl;
}
else{
std::cout<<"Database is opened."<<std::endl << "To close the app, print \"exit\"" << std::endl;
std::string requestString;
QSqlQuery query;
do{
std::cout << "Input a command:" << std::endl;
getline(std::cin, requestString);
QString QRequest = QString::fromStdString(requestString);
if(requestString != "exit"){
query.exec(QRequest);
if(query.isActive() && requestString!="exit"){
std::cout << "Request succeded." << std::endl;
}
else{
std::cout << "Whoops, something went wrong! ERROR: " << query.lastError().text().toStdString() << std::endl;
}
if(query.isSelect()){
QSqlRecord rec = query.record();
for(int i = 0; i < rec.count(); i++){
std::cout << std::setiosflags(std::ios::left);
std::cout << std::setw(10) << rec.fieldName(i).toStdString();
}
std::cout << std::endl;
while(query.next()){
std::cout << std::setiosflags(std::ios::left);
for(int j = 0; j < rec.count(); j++){
std::cout << std::setw(10) << rec.value(j).toString().toStdString();
}
std::cout << std::endl;
}
}
}
}while(requestString!="exit");
}
myDb.close();
std::cout<<"Thanks for using database. All the best!"<<std::endl;
return 1;
}
解决方案
问题是值不是由 Record 承载,而是由 Query 承载。所以有正确的输出:
while(query.next()){
std::cout << std::setiosflags(std::ios::left);
for(int j = 0; j < rec.count(); j++){
std::cout << std::setw(10)
<<query.value(j).toString().toStdString();
}
std::cout << std::endl;
}
推荐阅读
- apache - 如果从 http://www 重定向,则会在 URL 中插入 /index.php/。到 https://www
- python-3.x - 如何使用python lxml在向下滚动时抓取提供更多信息的html页面
- react-native - 如何在没有 webview 的情况下将 vimeo 播放器嵌入 react-native?
- c++ - 在 Visual Studio 中,我在头文件中创建一个结构,当我初始化它时出现错误
- flutter - 为什么会这样说:在“flutter”下发现了意外的孩子“flutter”。当我按照开发者网站上的说明进行操作时?
- go - 如何使用 go internal 包中的统计函数(MannWhitneyUTest)
- r - 用于 lyx 的 knitr 到 pdflatex 转换器
- css - 如何对我的 JSX/CSS 进行故障排除,以免发生这种混乱?
- google-app-engine - 如何使用结构数组实现 google datastore propertyloadsaver
- c++ - 对数组进行排序 C++