Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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++ can';t通过可执行文件连接到数据库_C++_Mysql_Qt_Qtsql_Qsqldatabase - Fatal编程技术网

C++ can';t通过可执行文件连接到数据库

C++ can';t通过可执行文件连接到数据库,c++,mysql,qt,qtsql,qsqldatabase,C++,Mysql,Qt,Qtsql,Qsqldatabase,我写了一个程序,需要连接到数据库,以插入一些数据,我的可执行文件没有连接到数据库,但当我检查与代码连接建立!我不知道什么是问题,你知道什么是问题吗? 我使用Qt连接到数据库,我的数据库在mySql上,以下是我的连接方式: soccer_db = QSqlDatabase::addDatabase("QMYSQL" , "sss"); soccer_db.setHostName(addrrFile.c_str()); soccer_db.setDatabaseName("sss")

我写了一个程序,需要连接到数据库,以插入一些数据,我的可执行文件没有连接到数据库,但当我检查与代码连接建立!我不知道什么是问题,你知道什么是问题吗? 我使用Qt连接到数据库,我的数据库在mySql上,以下是我的连接方式:

soccer_db = QSqlDatabase::addDatabase("QMYSQL" , "sss");
    soccer_db.setHostName(addrrFile.c_str());
    soccer_db.setDatabaseName("sss");
    soccer_db.open();
    if (!soccer_db.open()){
        emit dsignal("ssss not opened. Ckech whether server is down or change config file");
        return false;
    }

由于您尝试打开数据库两次,因此将失败。第一次尝试成功,但第二次失败。删除对
open
的第一个调用,如下所示

soccer_db = QSqlDatabase::addDatabase("QMYSQL" , "sss");
soccer_db.setHostName(addrrFile.c_str());
soccer_db.setDatabaseName("sss");
if (!soccer_db.open()){
    emit dsignal("ssss not opened. Ckech whether server is down or change config file");
    return false;
}

我想回答我的问题,在qt中,你应该完全寻址你的文件,而不是相对地址,如果你需要完全寻址,你可以通过QtDir给出当前目录

我尝试了这一点,但什么也没有发生,当我尝试从终端连接建立执行二进制文件时,但当我双击图标时失败了!你需要用户名和密码吗?当您尝试连接到数据库时,有很多事情可能会出错,您不应该听起来如此惊讶。请尝试使用
soccer\u db.lastError()
查找错误。感谢您的回复,问题在于主机名,因为我使用相对地址读取数据库ip地址,qt在运行二进制文件时更改当前目录,但找不到ip地址