2011-04-04 4 views
0

J'utilise les codes pour accéder sqlitesqlite3_bind_text pour une chaîne vide

sqlite3_bind_text(statement,1,[myString UTF8String],-1,SQLITE_TRANSIENT); 

Il fonctionne. Mais si myString est NULL, la mise à jour de l'enregistrement dans la table échoue toujours. (ou rien n'a changé) Comment traiter quand myStrign est NULL?

Bienvenue tout commentaire

Merci

+0

Vous définissez ** NOT NULL ** pour ce champ lorsque vous avez créé la table dans sqlite? – EmptyStack

+0

non, je n'ai pas défini NOT NULL – monsabre

+1

Seuls les masochistes utilisent directement l'API SQLite C dans Objective-C. [Utiliser FMDB] (http://github.com/ccgus/fmdb) (un encapsuleur SQLite) ou [CoreData] (http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData/ cdProgrammingGuide.html) (un gestionnaire de graphe d'objets) à la place. –

Répondre

6

Utilisez sqlite3_bind_null(statement, 1); lorsque votre chaîne est NULL.

if (myString) 
    sqlite3_bind_text(statement,1,[myString UTF8String],-1,SQLITE_TRANSIENT); 
else 
    sqlite3_bind_null(statement,1); 
+0

Doug s'il vous plaît jeter un oeil à ce problème similaire: http://stackoverflow.com/questions/14462951/ios-sqlite3-statement-coalesce-causing-memory-problems – abbood

Questions connexes