SQLITE_ENABLE_COLUMN_METADATA
Hello,
Je suis entrain de me former sur Cocoa et je cherche à comprendre SQLite 3.
Petite précision : c'est un programme pour Mac OSX pas pour iPhone.
J'ai donc ajouté le framework /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libsqlite3.0.dylib à mon projet.
J'arrives à ouvrir, faire des requêtes ... mais je voulais utiliser la méthode : sqlite3_table_column_metadata( ) qui me permet, entre autre d'avoir des informations complémentaires sur les colonnes (not null, primary key, etc.).
Mon problème : XCode me renvoit un message d'erreur :
"_sqlite3_table_column_metada", referenced from:
.....
Symbol(s) not found
Collect2: Id returned 1 exit status.
Sur le site sqlite.org, il est indiqué que pour pouvoir utiliser cette méthode, la librairie sqlite3 doit avoir été compliée avec l'option -SQLITE_ENABLE_COLUMN_METADATA.
J'ai surfé sur le Web à la recherche d'une librarie qui contient cette option, j'ai lu une centaine de posts sur le sujet... mais pas de réponse !
Quelqu'un indique qu'il faut crarrèment reprendre les sources de SQLIte et recompiler... cela me parait dangereux ?!?
Quelqu'un a-t-il déjà rencontré ce problème ? Si oui, comment l'avez-vous corrigé ?
Je suis deseperé ...



PS : Merci de ne pas me répondre que je dois préférer CoreData car cela n'est pas ma question.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais effectivement, il est indiqué clairement dans sqlite3.h que le symbole SQLITE_ENABLE_COLUMN_METADATA doit être défini à la compilation. À partir de là , tu n'as que deux choix:
- recompiler à partir des sources (faisable, mais galère, et il faudra placer la dylib dans le bundle de ton appli).
- te passer de cette fonction.
Personnellement, j'aurais choisi la deuxième option, ne serait-ce que parce qu'il y a certainement une bonne raison si cette fonction n'est pas standard. Par exemple, un impact important sur les performances ou la compatibilité; il serait intéressant de connaà®tre cette raison.
Dans un projet, j'ai tout simplement incorporé les fichiers .h et .c
et je n'ai pas rencontré de problèmes particuliers.