Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QSqlQueryModel无法打开数据库_C++_Mysql_Qt_Qt4_Qsqlquery - Fatal编程技术网

C++ QSqlQueryModel无法打开数据库

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

当我从mysql数据库“mydb”中查看数据时,从表“testtable”中,它无法打开数据库

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 openIf
database
不是指针,则调用querys时必须确保此对象处于活动状态
QSqlDatabase
destructor关闭并释放连接。好的,但是当我放入
QSqlDatabase database=QSqlDatabase::addDatabase(“QMYSQL”,“conn1”)对不起作用。
QSqlDatabase-database=QSqlDatabase::addDatabase(“QMYSQL”,“conn1”)此代码在堆栈中创建数据库对象,当代码离开当前方法时,此实例将自动销毁并关闭连接。尝试以当前对话框的成员身份创建数据库连接。