2010-07-15 8 views
3

Как говорится в названии.Альтернатива Sqlite для iPhone [monotouch]

Я нашел много проблем, которые связаны с отсутствием безопасности потоков в оболочке Sqlite, необходимой для использования Sqlite с Monotouch, поэтому вопрос - есть ли альтернатива? Должно быть что-то !!?

ш: //

+2

К сожалению, первоначально отправил ответ, но не понял, MonoTouch ненавидящий на CoreData. Единственная информация, которую я мог найти, это: http://forums.monotouch.net/yaf_postst156_Data-persistence-with-Monotouch.aspx – iwasrobbed

+0

sqlite dynlib, который поставляется с iPhoneSDK, не является потокобезопасным, но вы можете скомпилировать свою собственную статическую библиотеку sqlite из источник с включенным поточным макросом. См. Http://www.sqlite.org/faq.html#q6 – Akusete

ответ

4

сам Sqlite не поточно, поэтому вам нужно вручную сделать блокировку, когда вы собираетесь получить доступ к базе данных. Вы можете увидеть, как я сделал это с TweetStation:

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

Это позволяет мне обновить базу данных в фоновом режиме.

Существует несколько привязок к Sqlite: sqlite-net, которая является крошечной привязкой Sqlite или Mono.Data.Sqlite.

Что касается CoreData, у него будут те же проблемы, вы не получите бесплатную безопасность потоков, вам также следует следовать их правилам.

+0

, используя отличную библиотеку sqlite-net lib :) – iwayneo

0

В прошивкой 4, вы можете вызвать sqlite3_config (SQLITE_CONFIG_SERIALIZED), или с помощью sqlite3 обертку в C#:

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

Где находится пространство имен SQLite3? – Krumelur

+0

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

Смежные вопросы