C++ QSqlQueryModel无法打开数据库
当我从mysql数据库“mydb”中查看数据时,从表“testtable”中,它无法打开数据库C++ QSqlQueryModel无法打开数据库,c++,mysql,qt,qt4,qsqlquery,C++,Mysql,Qt,Qt4,Qsqlquery,当我从mysql数据库“mydb”中查看数据时,从表“testtable”中,它无法打开数据库 this->model = new QSqlQueryModel(); meineView->setModel(model); 我必须这样写: model->setQuery("SELECT id, Nachname, Vorname, Ort FROM mydb"); 大概是吧 model->setQuery("SELECT `testtabl
this->model = new QSqlQueryModel();
meineView->setModel(model);
我必须这样写:
model->setQuery("SELECT id, Nachname, Vorname, Ort FROM mydb");
大概是吧
model->setQuery("SELECT `testtable`.`id`,`testtable`.`Nachname`,`testtable`.`Vorname`,`testtable`.`Ort`FROM `mydb`.`testtable`;");
我错了什么?当我删除它时,我的程序工作(不查看数据)
当我可以打开它时,我如何将数据放入我的表中 首先,您需要使用
QSqlDatabase
类连接到数据库。然后可以使用适当的sql查询将QSqlQueryModel
连接到sql连接
您的第一个查询是错误的,因为mydb
是数据库,此查询需要表名:
从测试表中选择id、Nachname、Vorname、Ort
第二个查询是在查询引用多个表时选择的选项
从testable,othertable中选择testable.id,testable.name,othertable.data,其中testable.someRow=othertable.someRow
您需要使用数据库名称调用重写的方法。因为您尝试打开的数据库不是默认数据库
试试这个:
model->setQuery("SELECT `testtable`.`id`,`testtable`.`Nachname`,`testtable`.`Vorname`,`testtable`.`Ort
`FROM `mydb`.`testtable`;","mydb");
谢谢你的快速回答。现在我有了这个:
model->setQuery(“从testtable中选择id、Nachname、Vorname、Ort”)代码>但它无法打开表。我有连接:QSqlDatabase=QSqlDatabase::addDatabase(“QMYSQL”,“conn1”);setHostName(“127.0.0.1”);数据库设置端口(3306);setDatabaseName(“mydb”);database.setUserName(“根”);database.setPassword(“testpw”);如果(!database.open()){qDebug(“无法打开DB”);}
并查看错误:QSqlQuery::exec:database not openIfdatabase
不是指针,则调用querys时必须确保此对象处于活动状态QSqlDatabase
destructor关闭并释放连接。好的,但是当我放入QSqlDatabase database=QSqlDatabase::addDatabase(“QMYSQL”,“conn1”)在我的pushbuttonclicked()方法中,使用诸如sethost等连接的代码>对不起作用。QSqlDatabase-database=QSqlDatabase::addDatabase(“QMYSQL”,“conn1”)代码>此代码在堆栈中创建数据库对象,当代码离开当前方法时,此实例将自动销毁并关闭连接。尝试以当前对话框的成员身份创建数据库连接。