Problema con sqlite3

di il
4 risposte

Problema con sqlite3

Ciao a tutti, è la prima volta che scrivo in questo forum e vi ringrazio già da ora per la pazienza. Non è molto che mi sono cimentato con il C++ (arrivo da altri linguaggi), quindi ho esperienza di programmazione ma non tanto di questo linguaggio. Sto leggendo un manuale e sto ricavando notizie dal web. Comincio ad avere un po di domestichezza con la grammatica di questo linguaggio e sono ho fatto qualche programma di prova usando netbeans e implementando anche le interfacce con QT. Adesso sto cercando di capire come adoperare sqlite3. Ho già fatto qualcosa tipo aprire dei database che usavo già e stampare il risultato delle query nell'output.
Non riesco a capire una cosa, ho la segunte linea che mi stampa il risultato della query nell'output

cout << sqlite3_column_text(result, 0) << endl;
se lo stesso risultato volessi metterlo in un array come devo fare? Ho visto che se dichiaro un array string e faccio:

nomeArray[contatore] = sqlite3_column_text(result, 0); 
non funziona

Vi ringrazio già da ora, portate pazienza ma all'inizio devo ancora imparare molte cose.

4 Risposte

  • Re: Problema con sqlite3

    Sqlite3_column_text ti da un puntatore a unsigned char, quindi un array di caratteri. Quel che mi lascia perplesso è quel result messo come parametro, quando la funzione vuole un sqlite3_stmt*.
    Puoi provare a fare una specie di cast del tipo:
    
    nomeArray[contatore] = string(sqlite3_column_text(result, 0)); 
    
  • Re: Problema con sqlite3

    Ti metto il codice completo così capisci quel result:
    
    #include "inserimento.h"
    #include <iostream>
    #include <string>
    #include <sqlite3.h>
    #include <QtGui/QApplication>
    #include <inserimento.h>
    
    using namespace std;
    
    int estraiDati (){
        
        string sql;
        sqlite3* conn;
        sqlite3_stmt* result;
        string risultato;
        int contatore = 0;
        
        sqlite3_open("prova.sqlite", &conn);
        
        sql = "SELECT tipo FROM TIPO";
        
        sqlite3_prepare_v2(conn, sql.c_str(), sql.size(), &result, NULL);
            
    	while(sqlite3_step(result) == SQLITE_ROW)
    	{
    		cout << sqlite3_column_text(result, 0) << endl;
                    //risultato = sqlite3_column_text(result, 0);
                    ++contatore;
    	}
    
    	sqlite3_finalize(result);
    	sqlite3_close(conn);
        
    }
    
    comunque anche con la tua soluzione mi dice errore di conversione da cost unsigned char a const char
  • Re: Problema con sqlite3

    Ti basta un cast esplicito allora
    
    nomeArray[contatore] = reinterpret_cast<const char *>(sqlite3_column_text(result, 0)); 
    
  • Re: Problema con sqlite3

    Grazie skynet tutto funziona. Adesso devo capire e fare un po di pratica come si passano i dati tra le classi sopratutto gli array.
Devi accedere o registrarti per scrivere nel forum
4 risposte