Benutz nicht char* und char[], wenn du nicht genau weißt, was du tust. Dein Code hat da mehrere Probleme.
Die Zeiger, die dir sqlite3_column_text liefert, sind nur bis zum nächsten Aufruf von sqlite3_step oder sqlite3_finalize gültig. Wenn du die Strings darüber hinaus speichern willst, musst du sie kopieren.
Arrays kann man nicht mit = zuweisen. Das hast du vermutlich gemerkt, daher stammt wohl dieses Konstrukt:
Damit kopierst du aber nur das erste Zeichen.
Wenn du char*/char[] benutzt, musst du sicherstellen, dass deine Strings nullterminiert sind, und dass auch genügend Platz für eine Nullterminierung da ist. In iso3166alpha2 beispielsweise ist nur Platz für 1 Zeichen + Terminierung.
Warum benutzt du nicht std::string?