如何在tableview中显示sqlite3中 的表中的信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在tableview中显示sqlite3中 的表中的信息相关的知识,希望对你有一定的参考价值。
参考技术A 最近工作中用到了QT、sqlite3,这里记录当中用到的一些知识点:具体就是在QT的widget中用tableview显示sqlite数据库表中的内容。假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据……(随意建的表)
首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码:
QsqDatabase db = QsqlDatabase::addDatabase("SQLITE");
db.setDatabaseName("test.db");
if(!db.open())
//错误处理
static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview);
model->setQuery(QString("select * from table;"));
model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号"));
model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"));
model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄"));
ui->tableview->setModel(model);
db->close();
这样之后,table表里的内容就会显示到tableview中了。本回答被提问者和网友采纳
如何在数组中显示来自 Firebase 的用户昵称,然后在 TableView 中显示(For 循环问题)
【中文标题】如何在数组中显示来自 Firebase 的用户昵称,然后在 TableView 中显示(For 循环问题)【英文标题】:How can I display users nickname from Firebase in an array then in a TableView (For loop issue) 【发布时间】:2017-10-17 11:03:08 【问题描述】:我正在开发一个应用程序,当我试图通过在搜索栏中搜索期间从 Firebase 数据库中检索他们的昵称来查找用户时。一开始我想把我的所有用户都放在一个数组中,但我不能。
使用有效的代码进行编辑:
var userTab = [String]()
override func viewDidLoad()
super.viewDidLoad()
ref = Database.database().reference()
ref.child("users").queryOrdered(byChild: "pseudo").observeSingleEvent(of: .value, with: (snapshot) in
if (snapshot.value is NSNull)
print("Aucune donnée trouvée dans la base de données")
else
for child in snapshot.children
let userSnap = child as! DataSnapshot
let uid = userSnap.key
let userDict = userSnap.value as! [String: AnyObject]
let pseudo = userDict["nickname"] as! String
let total = snapshot.childrenCount
print(pseudo)
self.userTab.append(pseudo) // I change this line self.userTab = [pseudo]
self.resultsController.tableView.reloadData() // I add this line
print(self.userTab)
continue // I add this line too
)
print("userTab: \(self.userTab)") // Now the array isn't empty
在 For 循环中,我可以访问变量“伪”并在控制台中打印所有用户昵称,但 在 For 循环之外我不能将伪变量放入数组 userTab 中。我怎样才能做到这一点?我真的需要用用户的昵称填充我的 userTab 并在 TableView 中显示所有内容。 我已经尝试在 viewDidLoad() 方法之外声明“伪”变量,但同样的问题,在 For 循环之后数组始终为空。我做错了什么?
查看我的编辑,现在所有用户昵称都在 userTab 数组中,我可以在搜索栏中搜索它们并将结果显示在 tableView 中。
【问题讨论】:
在获取数据之前,创建带有标题的表。之后,将项目添加到数组并同时在表中创建行。这可以解决您的问题。 我没有在帖子中输入代码,但我已经这样做了。你要我把我的完整代码吗? 【参考方案1】:observeSingleEvent
是异步的,它不是在循环之外,而是在不同的时间,
尝试设置断点以查看它首先停止的位置
你设置了 self.userTab = [pseudo]
所以现在只需重新加载 tableview
【讨论】:
先停是什么意思? 你试过设置断点吗?在self.userTab = [pseudo]
和您要打印的地方?
如果你有 2 个断点,你知道其中一个会先停止程序
我明白你的意思,我还没有尝试断点,但我的代码并没有停止,它只是在循环外的数组中不打印任何内容。我没有把我的 tableView 代码放在问题中,但我可以把我的完整代码放在这里
所以设置这个断点,你的打印是在数组中设置结果之后完成的以上是关于如何在tableview中显示sqlite3中 的表中的信息的主要内容,如果未能解决你的问题,请参考以下文章
如何显示 Java SQLite3 数据库中存在的表名? [复制]
iOS XMPP如何在tableview的单个部分中显示所有用户