2010-07-15 5 views
3

Comme le titre dit.Alternative à Sqlite pour iPhone [monotouch]

Je trouve que beaucoup de problèmes que j'ai sont liés à l'absence de sécurité des threads dans l'encapsuleur Sqlite nécessaire pour utiliser Sqlite avec Monotouch - donc - la question est - existe-t-il une alternative? Il doit y avoir quelque chose !!?

w: //

+2

Désolé, posté à l'origine une réponse, mais ne savais pas que MonoTouch est haïssait sur CoreData. Seules les informations que j'ai pu trouver étaient: http://forums.monotouch.net/yaf_postst156_Data-persistence-with-Monotouch.aspx – iwasrobbed

+0

Le dynlib sqlite fourni avec l'iPhoneSDK n'est pas sécurisé, mais vous pouvez compiler votre propre bibliothèque statique sqlite à partir du source avec la macro threadsafe activée. Voir http://www.sqlite.org/faq.html#q6 – Akusete

Répondre

4

Sqlite lui-même est pas thread-safe, vous devez donc prendre manuellement un verrou chaque fois que vous allez accéder à la base de données. Vous pouvez voir comment je l'ai fait avec TweetStation:

http://github.com/migueldeicaza/TweetStation/

Cela me permet de mettre à jour la base de données en arrière-plan.

Il existe deux liaisons à Sqlite: sqlite-net qui est une minuscule liaison Sqlite ou Mono.Data.Sqlite.

Comme pour CoreData, il aurait les mêmes problèmes, vous n'obtiendrez pas la sécurité des threads gratuitement, vous devez également suivre leurs règles.

+0

en utilisant l'excellent sqlite-net lib maintenant :) – iwayneo

0

Dans iOS 4, vous pouvez appeler sqlite3_config (SQLITE_CONFIG_SERIALIZED), ou en utilisant wrapper Sqlite3 en C#:

var result = SQLite3.Config(SQLite3.ConfigOption.Serialized); 
    if (result != SQLite3.Result.OK) 
    { 
     throw new InvalidProgramException("sqlite3 refused Serialized option"); 
    } 
+0

Où se trouve l'espace de noms SQLite3? – Krumelur

+0

http://code.google.com/p/sqlite-net/source/browse/trunk/src/SQLite.cs – jamie