Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Sqlite: falha incoerência com query.prepare()
Forum Updated to NodeBB v4.3 + New Features

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

Scheduled Pinned Locked Moved Portuguese
2 Posts 1 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    shoxsz
    wrote on last edited by
    #1

    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.

    1 Reply Last reply
    0
    • S Offline
      S Offline
      shoxsz
      wrote on last edited by
      #2

      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. :)

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved