iOS development-data article-sqlite Storage
Last Update:2015-08-17
Source: Internet
Author: User
<span id="Label3"></p><p class="p1"><p class="p1"><span class="s1">Summary <span class="s2">: <span class="s1">There are 4 ways in which persistent data storage is developed by IOS <span class="s3"> <span class="s1"> <span class="s2">: Nsuserdefault <span class="s1">and <span class="s2">. plist<span class="s1">,<span class="s2">nskeyedarchiver, <span class="s1">and <span class="s2"> Nskeyedunarchiver<span class="s1">,<span class="s2">sqlite3 <span class="s1">database,<span class="s2">coredata<span class="s1">. </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p></p><p class="p2"><p class="p2"><span class="s4">sqlite3<span class="s2"> and <span class="s4">coredata<span class="s2"> Suitable for storing large amounts of data Span class= "s4" > (<span class="s2"> content data <span class="s4" ), <span and two other types of storage for simple data (<span class="s2"> language <span class="s4">,<span class="s2"> font <span class="s4">,<span class="s2"> tags and other simple data storage <span class="s2" ) <span . < span></span></span></span></span></span></span></span></span></span></span></span> </p></p><p class="p1"><p class="p1"><span class="s1"> prepare <span class="s2">:<span class="s1"> Here is the main introduction to the use of <span class="s2">sqlite3 <span class="s1"> encapsulated <span class="s2">fmdatabase<span class="s2" to the database <span> (<span class="s2" and of course span>plausibledatabase<span class="s2" , <span>sqlitepersistentobjects<span class="s1"> Other encapsulated libraries <span class="s1" ), <span> Import need to rely on <span class="s2">libsqlite3.dylib<span class="s1"> package <span class="s2">,fmdatabase<span class="s1"> has been compatible according to the project different conditions <span class="s2">arc<span class="s2" and non- <span>arc<span class="s2" . to explain the database only <span>,<span class="s1"> Create a simple project <span class="s2">,<span class="s1"> import <span class="s2">fmdatabase<span class="s1"> library. <span class="s2"> <br> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> /span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </span> </p></p><p class="p1"><p class="p1"><span class="s1">content <span class="s2">:</span> </span> <span class="s1">1. <span class="s2">Create a database</span> </span></p></p><pre><pre><span style="color: #0000ff;">#import</span> <UIKit/UIKit.h><span style="color: #0000ff;">#import</span><span style="color: #800000;">"</span><span style="color: #800000;">FMDatabase.h</span><span style="color: #800000;">"</span><span style="color: #0000ff;">#import</span> <span style="color: #800000;">"</span> <span style="color: #800000;">FMDatabaseQueue.h</span> <span style="color: #800000;">"</span> <span style="color: #0000ff;">@interface</span> <span style="color: #000000;">viewcontroller:uiviewcontroller{ </span>*<span style="color: #000000;">db; </span> *<span style="color: #000000;">queue_db;}</span></pre></pre><pre><pre><span style="color: #008000;">//</span> <span style="color: #008000;">CREATE database file path</span> -(nsstring*<span style="color: #000000;">) getpath{ nsarray</span>* paths =<span style="color: #000000;">Nssearchpathfordirectoriesindomains ( nsdocumentdirectory,nsuserdomainmask, YES); </span> <span style="color: #0000ff;">return</span> [[paths objectatindex:<span style="color: #800080;">0</span>]stringbyappendingpathcomponent:<span style="color: #800000;">@ "</span><span style="color: #800000;">test.sqlite</span><span style="color: #800000;">"</span> <span style="color: #000000;">] ;}</span></pre></pre><p><p>2. Database Building Table-add-delete-change operation</p></p><pre><pre>-(<span style="color: #0000ff;">void </span> <span style="color: #000000;">) viewdidload {[super viewdidload]; [self executesql:[self createtable]]; </span> <span style="color: #008000;">//</span> <span style="color: #008000;"> CREATE TABLE </span> [self executesql:[self insertdata]]; <span style="color: #008000;">//</span> <span style="color: #008000;" "add < span> [self executesql:[self deleteData]]; <span style="color: #008000;">//</span> <span style="color: #008000;"> delete </span> [self executesql:[self setData]]; <span style="color: #008000;">//</span> <span style="color: #008000;"> change </span> <span style="color: #008000;">//</span> <span style="color: #008000;"> check </span> <span style="color: #000000;"> [self querydata]; </span> <span style="color: #008000;">//</span> <span style="color: #008000;"> open multithreading </span> <span style="color: #000000;" [nsthread detachnewthreadselector: @selector (multiplethread) totarget:self withobject:nil]; }< span></span></span></pre></pre><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Create a database</span></span>-(nsstring *<span style="color: #000000;"><span style="color: #000000;">) createtable{nsstring</span></span>*createsql = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">CREATE TABLE IF not EXISTS TEST (a interger,b Text)</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">createsql;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Increase</span></span>-(nsstring *<span style="color: #000000;"><span style="color: #000000;">) insertdata{nsstring</span></span>*insertsql=<span style="color: #000000;"><span style="color: #000000;">[nsstring stringwithformat:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">INSERT into '%@ ' ('%@ ', '%@ ') VALUES ('%@ ', '%@ ')</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">TEST</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">a</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">b</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [nsnumber numberwithint:<span style="color: #800080;"><span style="color: #800080;">1</span></span>],<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Ningbo</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">insertsql;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Delete</span></span>-(nsstring *<span style="color: #000000;"><span style="color: #000000;">) deletedata{nsstring</span></span>*deletesql = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">DELETE from '%@ ' where%@ = '%@ '</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">TEST</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">b</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Ningbo</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">deletesql;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Change</span></span>-(nsstring *<span style="color: #000000;"><span style="color: #000000;">) setdata{nsstring</span></span>*setsql = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">UPDATE '%@ ' SET '%@ ' = '%@ ' WHERE '%@ ' = '%@ '</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">TEST</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">b</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Xiangshan</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">a</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>, [nsnumber numberwithint:<span style="color: #800080;"><span style="color: #800080;">1</span></span><span style="color: #000000;"><span style="color: #000000;">]]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">setsql;}</span></span></pre><p><p>3. Performing operations on the database</p></p><pre><pre><span style="color: #008000;">//</span> <span style="color: #008000;">Database execution Operation</span> -(BOOL) executesql: (nsstring *<span style="color: #000000;">) sql{ </span>=<span style="color: #000000;"> [fmdatabase databasewithpath:[self getpath]] ; BOOL success; </span> <span style="color: #0000ff;">if</span> <span style="color: #000000;">([db open]) { success </span>=<span style="color: #000000;"> [db executeupdate:sql]; }</span> <span style="color: #0000ff;">Else</span> <span style="color: #000000;">{ NSLog (</span><span style="color: #800000;">@ "</span><span style="color: #800000;">OPEN FAIL</span><span style="color: #800000;">"</span><span style="color: #000000;">); } [db close]; </span> <span style="color: #0000ff;">return</span> <span style="color: #000000;">success;}</span></pre></pre><p><p>4. Query Operations for databases</p></p><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Check</span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) querydata{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span><span style="color: #000000;"><span style="color: #000000;">([db open]) {nsstring</span></span>*querysql =<span style="color: #000000;"><span style="color: #000000;">[nsstring stringwithformat:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">SELECT * from%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">TEST</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; Fmresultset</span></span>* rs =<span style="color: #000000;"><span style="color: #000000;">[db executequery:querysql]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span><span style="color: #000000;"><span style="color: #000000;">([rs next]) {</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>A = [rs intforcolumn:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">a</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSString</span></span>*b = [rs stringforcolumn:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">b</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">a:%d = = b:%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, a, b); } [db close]; }}</span></span></pre><p><p>5. <span class="s1">multi-threaded operation of the database</span></p></p><p class="p1"><p class="p1"><span class="s1">If in the multi-threaded environment <span class="s2">, <span class="s1">cannot use the same fmdatabase in the Multi-thread <span class="s2"> <span class="s1">data access <span class="s2">, <span class="s1">will cause the data confusion <span class="s2">, the multi- <span class="s1">thread cannot use the Singleton object <span class="s2">, <span class="s1">then must depend on <span class="s2"> Fmdatabasequeue. </span></span></span></span></span></span></span></span></span></span></span></span></p></p><pre><pre><span style="color: #008000;">//</span> <span style="color: #008000;">using Fmdatabasequeue for database operations under multithreading</span> -(<span style="color: #0000ff;">void</span><span style="color: #000000;">) multiplethread{ </span>=<span style="color: #000000;"> [ Fmdatabasequeue databasequeuewithpath:[self getpath]]; @autoreleasepool { [queue_db indatabase:</span>^ (fmdatabase *<span style="color: #000000;">db2) { [db2 executeupdate:[self insertdata]]; [self querydata];} ]; </span> }</pre></pre><p><p></p></p><p><p>iOS development-data article-sqlite Storage</p></p></span>