【问题标题】:Connecting Mysql and qt?连接Mysql和qt?
【发布时间】:2011-08-06 18:13:17
【问题描述】:
我在将正在构建的程序与 qt 连接时遇到了一些困难。一旦我这样做了,我如何让数据库与表格小部件一起工作?
我应该让你知道我不知道从哪里开始,除了我用 libreoffice base 制作了数据库。
【问题讨论】:
-
你没有给我们太多信息。但是,如果您正在寻找如何将 Qt 连接到 MySQL,则无需担心。这已由QSqlDatabase 处理
标签:
mysql
database
qt
ubuntu
connection
【解决方案1】:
Qt 提供了模型/视图框架,它是一个非常灵活的工具,用于在表格、树或列表中呈现数据。所以你需要使用的模型是QSqlTableModel。
首先创建一个QSqlDatabase实例,并连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("my_database");
db.setUserName("username");
db.setPassword("password");
if(!db.open())
QMessageBox::warning(this,"Error","Unable to connect to the database");
然后创建模型
QSqlTableModel *model = new QSqlTableModel(parent,db);
model->setTable("students");
model->select(); //< fetch data
最后告诉表格显示来自这个模型的数据
QTableView *table = new QTableView;
table->setModel(model);
【解决方案2】:
在 Qt 的帮助系统下,查看示例,转到 SQL,然后选择表模型示例。您会发现将 MySQL 与 Qt 一起使用并不难。 (您可能必须手动编译 qtmysql 驱动程序;在我的系统上,它位于 /QtSources/4.7.3/src/plugins/sqldrivers/mysql/mysql.pro 中。只需 qmake/make/make install。祝你好运并享受!
【解决方案3】:
- 将 QT +=Core sql 添加到 .pro 中
- 下载libmysq.dll并添加到Qt-> Qt 5.3.0 -> mingw482_32 -> Plugins -> sqldrivers
- 创建新的 Qt 控制台文件
- 将此行添加到 main.cpp
.
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("");
db.setDatabaseName("sim");
if(db.open())
{
qDebug() << "connected " << db.hostName();
}else{
qDebug() << "Connection FAILED.";
}
return a.exec();
}