Sqlite: falha incoerência com query.prepare()



  • Olá pessoal, estou fazendo uma aplicação eu acessa um bd sqlite, criei o banco e as tabelas e tá tudo pronto, o problema é quando vou executar a query, eu abro a conexão e não gera erro nenhum, mas quando uso o QSqlQuery::prepare() ele escreve na saída do programa que a conexão não está aberta e gera erro na hora de executar a query, vou postar meu código:

    Criar a conexão(este método é estático e não dispara exceções):
    @QSqlDatabase SqliteConnection::get(){

    if(connection.isOpen())
        return connection;
    
    connection = QSqlDatabase::addDatabase("QSQLITE");
    connection.setDatabaseName(database);
    
    QFileInfo check_file(database);
    
    //Verifica se o arquivo existe
    if(!check_file.isFile())
        throw new ConnectionException("database file not found.");
    //Tenta abrir o banco
    if(!connection.open())
        throw new ConnectionException(connection.lastError().text());
    
    return connection;
    

    }@

    Executar a query(essa é só a parte da query, isso tudo está dentro de um bloco try e o método faz parte da classe UserSqlite):
    @ con = SqliteConnection::get();//sem erro

        query.prepare("select * from user where name = :name and password = :password");//gera erro
        query.bindValue(":name", name);
        query.bindValue(":password", password);
    
        if(!query.exec())
            throw new ConnectionException(query.lastError().text());@
    

    Não entendo o que está errado, todos os tutoriais e vídeo do youtube fazem da mesma forma que eu fiz!! se alguém puder ajudar eu agradeço.



  • ok, questão resolvida! o problema é que eu tenho que passar uma referência da conexão para a query, acho que também funciona se usar o método exec() da conexão, ele retorna uma QSqlQuery que provavelmente possui a resposta da query. :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.