IOS Database SQLite

Source: Internet
Author: User
Tags sqlite database stmt sqlite manager
<span id="Label3"></p>SQLite Introduction SQLite is a lightweight embedded database, both Android and iOS development using SQLite database. It is characterized by: <ul> <ul> <li>It occupies very low resources, in the embedded device, may only need hundreds of K of memory is Enough.</li> <li>Its processing speed is faster than the two famous databases of MySQL and Postgresql.</li> <li>It is a C language framework, strong cross-platform.</li> </ul> </ul>To use SQLite3 in ios, you need to import the Libsqlite3 library in Xcode<p><p></p></p>The following is a combination of SQL statements to complete database operations, using the method defined Above:<pre class="prettyprint"><code class=" hljs sql">To create a table:<span class="hljs-operator"><span class="hljs-operator"> <span class="hljs-keyword">Create</span> <span class="hljs-keyword"></span> table table name (field <span class="hljs-number">1</span>, field <span class="hljs-number">2</span>,......, field n,[table-level constraint]) [type= table type];</span></span>Insert Record:<span class="hljs-operator"><span class="hljs-operator"> <span class="hljs-keyword">Insert</span> <span class="hljs-keyword"></span> into table name (field <span class="hljs-number">1</span>,......, field n) <span class="hljs-keyword"></span> values (value <span class="hljs-number">1</span>,......, value n);</span></span>To delete a record:<span class="hljs-operator"><span class="hljs-operator"> <span class="hljs-keyword">Delete</span> <span class="hljs-keyword"></span> from table name <span class="hljs-keyword">where</span> conditional expression;</span></span>To modify a record:<span class="hljs-operator"><span class="hljs-operator"> <span class="hljs-keyword">update</span> table name <span class="hljs-keyword">set</span> field name <span class="hljs-number">1</span>= value <span class="hljs-number">1</span>,......, field name n= value n <span class="hljs-keyword">where</span> condition expression;</span></span>To view Records:<span class="hljs-operator"><span class="hljs-operator"> <span class="hljs-keyword">Select</span> field <span class="hljs-number">1</span>,......, field n <span class="hljs-keyword"></span> from table name <span class="hljs-keyword">where</span> conditional expression;</span></span></code></pre><p><p>1. Open the Database<br>The C language functions used are as follows:</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs cs"><span class="hljs-comment">/* 打开数据库 */</span><span class="hljs-keyword">int</span> sqlite3_open( <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> *filename, <span class="hljs-comment">/* 数据库路径(UTF-8) */</span> sqlite3 **pDb <span class="hljs-comment">/* 返回的数据库句柄 */</span>);</code></pre></pre><p><p>2, Querying the database<br>C-language functions Used:</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs cs"><span class="hljs-comment">/* 执行有返回结果的SQL语句 */</span><span class="hljs-keyword">int</span> sqlite3_prepare_v2( sqlite3 *db, <span class="hljs-comment">/* 数据库句柄 */</span> <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> *zSql, <span class="hljs-comment">/* SQL语句(UTF-8) */</span> <span class="hljs-keyword">int</span> nByte, <span class="hljs-comment">/* SQL语句最大长度,-1表示SQL支持的最大长度 */</span> sqlite3_stmt **ppStmt, <span class="hljs-comment">/* 返回的查询结果 */</span> <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> **pzTail <span class="hljs-comment">/* 返回的失败信息*/</span>);</code></pre></pre><p><p>3, Inserting data<br>C-language functions Used:</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs cs"><span class="hljs-comment">/* 执行有返回结果的SQL语句 */</span><span class="hljs-keyword">int</span> sqlite3_prepare( sqlite3 *db, <span class="hljs-comment">/* 数据库句柄 */</span> <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> *zSql, <span class="hljs-comment">/* SQL语句(UTF-8) */</span> <span class="hljs-keyword">int</span> nByte, <span class="hljs-comment">/* SQL语句最大长度,-1表示SQL支持的最大长度 */</span> sqlite3_stmt **ppStmt, <span class="hljs-comment">/* 返回的查询结果 */</span> <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> **pzTail <span class="hljs-comment">/* 返回的失败信息*/</span>);</code></pre></pre><p><p>4. Deleting a database<br>C-language functions Used:</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs cs"><span class="hljs-comment">/* 执行没有返回的SQL语句 */</span><span class="hljs-keyword">int</span> sqlite3_exec( sqlite3 *db, <span class="hljs-comment">/* 数据库句柄 */</span> <span class="hljs-keyword">const</span><span class="hljs-keyword">char</span> *sql, <span class="hljs-comment">/* SQL语句(UTF-8) */</span> <span class="hljs-keyword">int</span> (*callback)(<span class="hljs-keyword">void</span>*,<span class="hljs-keyword">int</span>,<span class="hljs-keyword">char</span>**,<span class="hljs-keyword">char</span>**), <span class="hljs-comment">/* 回调的C函数指针 */</span> <span class="hljs-keyword">void</span> *arg, <span class="hljs-comment">/* 回调函数的第一个参数 */</span> <span class="hljs-keyword">char</span> **errmsg <span class="hljs-comment">/* 返回的错误信息 */</span>);</code></pre></pre><p><p>5. Close the database<br>C-language functions Used:</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs cs"><span class="hljs-comment">/* 关闭数据库 */</span><span class="hljs-keyword">int</span> sqlite3_close(sqlite3 *db);</code></pre></pre><p><p>Here's a small example:</p></p><p><p>Here the request data is the user name and ID of the microblog to define a model</p></p><p><p>DataModel.h</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs objectivec"><span class="hljs-preprocessor">#import <span class="hljs-title"><Foundation/Foundation.h></span></span><span class="hljs-class"><span class="hljs-keyword">@interface</span> <span class="hljs-title">DataModel</span> : <span class="hljs-title">NSObject</span></span><span class="hljs-keyword">@property</span> (<span class="hljs-keyword">nonatomic</span><span class="hljs-built_in">NSString</span> *screen_name;<span class="hljs-keyword">@property</span> (<span class="hljs-keyword">nonatomic</span><span class="hljs-built_in">NSString</span> *avatar_hd;- (instancetype)initWithDictionary:(<span class="hljs-built_in">NSArray</span> *)dictionary;<span class="hljs-keyword">@end</span></code></pre></pre><p><p>datamodel.m</p></p><pre class="prettyprint"><pre class="prettyprint"><code class="hljs objectivec"><span class="hljs-preprocessor"> #import <span class="hljs-title"> "DataModel.h" </span> </span> <span class="hljs-class"><span class="hljs-keyword"> @implementation </span> <span class="hljs-title">datamodel </span> </span>-(instancetype) initwithdictionary: (<span class="hljs-built_in"> Nsdictionary </span> *) dictionary {<span class="hljs-keyword">if </span> (<span class="hljs-keyword">self </span> = [ Span class= "hljs-keyword" >super init]) {[<span class=" Hljs-keyword ">self </span> setvaluesforkeyswithdiction ary:dictionary]; } <span class="hljs-keyword">return </span> <span class="hljs-keyword">self </span>;} -(<span class="hljs-keyword">void </span>) setValue: (<span class="hljs-keyword">id </span>) value forundefinedkey: ( <span class="hljs-built_in">nsstring </span> *) key {<span class="hljs-built_in">nslog </span> (@<span class=" Hljs-string ">"%@ "</span>, key);} <span class="hljs-keyword"> @end </span> </code> </pre></pre><p><p>When defining a class that processes a database</p></p><p><p>DataBase.h</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs java">#<span class="hljs-keyword">import</span> <Foundation/Foundation.h><span class="hljs-javadoc">/** 导入DataModel*/</span>#<span class="hljs-keyword">import</span><span class="hljs-string">"DataModel.h"</span><span class="hljs-annotation">@interface</span> DataBase : NSObject<span class="hljs-javadoc">/** 打开数据库*/</span>+ (<span class="hljs-keyword">void</span>)openDB;<span class="hljs-javadoc">/** 查*/</span>+ (NSArray *)find;<span class="hljs-javadoc">/** 插*/</span><span class="hljs-javadoc">/** 删除*/</span>+ (BOOL)deleteModel:(DataModel *)dataModel;<span class="hljs-annotation">@end</span></code></pre></pre><p><p>Database.m</p></p><pre class="prettyprint"><code class=" hljs objectivec"><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"DataBase.h"</span> </span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title"><sqlite3.h></span> </span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@implementation</span> <span class="hljs-title">DataBase</span> </span></span><span class="hljs-comment"><span class="hljs-comment">//create a Database object</span></span><span class="hljs-keyword"><span class="hljs-keyword">Static</span></span>Sqlite3 *db;<span class="hljs-preprocessor"><span class="hljs-preprocessor">#pragma mark-open Database</span></span>+ (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) Opendb {<span class="hljs-comment"><span class="hljs-comment">//move The imported database to the Documents folder</span></span> <span class="hljs-comment"><span class="hljs-comment">//first Create a database outside to import the database into the project "this step must be done"</span></span> <span class="hljs-comment"><span class="hljs-comment">//get the path to the database</span></span> <span class="hljs-comment"><span class="hljs-comment">//here WeiBo is the name of the database created (do not mistake)</span></span> <span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*originpath = [[<span class="hljs-built_in"><span class="hljs-built_in">NSBundle</span></span>mainbundle] pathforresource:@<span class="hljs-string"><span class="hljs-string">"WeiBo"</span></span>oftype:@<span class="hljs-string"><span class="hljs-string">"sqlite"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//Documents folder and then stitch the path</span></span> <span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*targetpath = [[nssearchpathfordirectoriesindomains (nsdocumentdirectory, nsuserdomainmask,<span class="hljs-literal"><span class="hljs-literal">YES</span></span>) objectatindex:<span class="hljs-number"><span class="hljs-number">0</span></span>] stringbyappendingpathcomponent:@<span class="hljs-string"><span class="hljs-string">"collection.sqlite"</span></span>];<span class="hljs-built_in"><span class="hljs-built_in">Nsfilemanager</span></span>*manager = [<span class="hljs-built_in"><span class="hljs-built_in">Nsfilemanager</span></span>defaultmanager];<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(! [manager Fileexistsatpath:targetpath]) {[manager Moveitematpath:originpath Topath:targetpath error:<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>]; }<span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*filename = (<span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*) [targetpath utf8string];<span class="hljs-comment"><span class="hljs-comment">//open Database</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>result = Sqlite3_open (filename, &db);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(result = = Sqlite_ok) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"database Open successfully"</span></span>); }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"database Open failed"</span></span>); }}<span class="hljs-preprocessor"><span class="hljs-preprocessor">#pragma mark-check</span></span>+ (<span class="hljs-built_in"><span class="hljs-built_in">Nsarray</span></span>*) Find {<span class="hljs-built_in"><span class="hljs-built_in">Nsmutablearray</span></span>*marray = [<span class="hljs-built_in"><span class="hljs-built_in">Nsmutablearray</span></span>array];<span class="hljs-comment"><span class="hljs-comment">//open Database</span></span>[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>opendb];<span class="hljs-comment"><span class="hljs-comment">//statement of a</span> statement</span>Sqlite3_stmt *stmt =<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>;<span class="hljs-comment"><span class="hljs-comment">//check Table</span></span> <span class="hljs-comment"><span class="hljs-comment">//here WeiBo is the name of the table under CREATE database (do not Mistake)</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*sql =<span class="hljs-string"><span class="hljs-string">"select *from weiBo"</span></span>;<span class="hljs-comment"><span class="hljs-comment">//translate SQL text into a statement object</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>result = Sqlite3_prepare_v2 (db, sql,-<span class="hljs-number"><span class="hljs-number">1</span></span>, &stmt,<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(result = = Sqlite_ok) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"prepare for Query success"</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> while</span>(sqlite3_step (stmt) = = Sqlite_row) {<span class="hljs-comment"><span class="hljs-comment">//extract Data</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*screen_name = (<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*) Sqlite3_column_text (stmt,<span class="hljs-number"><span class="hljs-number">0</span></span>);<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*AVATAR_HD = (<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*) Sqlite3_column_text (stmt,<span class="hljs-number"><span class="hljs-number">1</span></span>); Datamodel *datamodel = [[datamodel alloc] init]; Datamodel<span class="hljs-variable"><span class="hljs-variable">. Screen_name</span></span>= [<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>Stringwithcstring:screen_name encoding:<span class="hljs-number"><span class="hljs-number">4</span></span>]; Datamodel<span class="hljs-variable"><span class="hljs-variable">. AVATAR_HD</span></span>= [<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>STRINGWITHCSTRING:AVATAR_HD encoding:<span class="hljs-number"><span class="hljs-number">4</span></span>];<span class="hljs-comment"><span class="hljs-comment">//"nsnumber type" [nsnumber numberwithinteger:[[nsstring stringwithcstring:deal_id encoding:4] integerValue]];</span></span>[marray addobject:datamodel]; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>marray;}<span class="hljs-preprocessor"><span class="hljs-preprocessor">#pragma mark-plug</span></span>+ (<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>) Insertmodel: (datamodel *) Datamodel {<span class="hljs-comment"><span class="hljs-comment">//open Database</span></span>[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>opendb]; Sqlite3_stmt *stmt =<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>;<span class="hljs-comment"><span class="hljs-comment">//here WeiBo is the name of the table under CREATE database (do not Mistake)</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Char</span></span>*sql =<span class="hljs-string"><span class="hljs-string">"insert into WeiBo (screen_name, avatar_hd) values (?,?)"</span></span>;<span class="hljs-comment"><span class="hljs-comment">//convert SQL text to a statement object</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>result = Sqlite3_prepare (db, sql,-<span class="hljs-number"><span class="hljs-number">1</span></span>, &stmt,<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(result = = Sqlite_ok) {<span class="hljs-comment"><span class="hljs-comment">//insert the data into the database</span></span>Sqlite3_bind_text (stmt,<span class="hljs-number"><span class="hljs-number">1</span></span>, [datamodel<span class="hljs-variable"><span class="hljs-variable">. Screen_name</span></span>utf8string],-<span class="hljs-number"><span class="hljs-number">1</span></span>,<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>); Sqlite3_bind_text (stmt,<span class="hljs-number"><span class="hljs-number">2</span></span>, [datamodel<span class="hljs-variable"><span class="hljs-variable">. AVATAR_HD</span></span>utf8string],-<span class="hljs-number"><span class="hljs-number">1</span></span>,<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>);<span class="hljs-comment"><span class="hljs-comment">//[nsnumber] sqlite3_bind_text (stmt, 1, [[nsstring stringwithformat:@ "%@", model.comment_num] utf8string],-1, Nil );</span></span> <span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(sqlite3_step (stmt) = = Sqlite_done) {flag =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>flag;}<span class="hljs-preprocessor"><span class="hljs-preprocessor">#pragma mark-delete</span></span>+ (<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>) Deletemodel: (datamodel *) Datamodel {<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>Flag =<span class="hljs-literal"><span class="hljs-literal">NO</span></span>;<span class="hljs-comment"><span class="hljs-comment">//open Database</span></span>[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>opendb];<span class="hljs-comment"><span class="hljs-comment">//here WeiBo is the name of the table under CREATE database (do not Mistake)</span></span> <span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*sql = [<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>stringwithformat:@<span class="hljs-string"><span class="hljs-string">"delete from WeiBo where Screen_name =%@"</span></span>, Datamodel<span class="hljs-variable"><span class="hljs-variable">. Screen_name</span></span>];<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>result = sqlite3_exec (db, sql<span class="hljs-variable"><span class="hljs-variable">. Utf8string</span></span>,<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>,<span class="hljs-literal"><span class="hljs-literal">NULL</span></span>,<span class="hljs-literal"><span class="hljs-literal">Nil</span></span>);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(result = = Sqlite_ok) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"delete succeeded"</span></span>); Flag =<span class="hljs-literal"><span class="hljs-literal">YES</span></span>; }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"delete failed"</span></span>); }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>flag;}<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span></code></pre>Create a database<p><p>(in Firefox browser)<br>1,sqlite Manager Download</p></p><p><p></p></p><p><p>2, There are several ways to create a database (this does not explain it all) I have a database of Firefox browser<br>Open Browser –> tools –> Find SQLite Manager<br></p></p><p><p>3, click: The SQLite Manager page is like this<br></p></p><p><p>4, Create a database<br></p></p><p><p>5, the desktop dragged it to the project<br></p></p><p><p>6, Create a table of the database (the table inside the Create field can be understood as a property)<br><br></p></p><p><p>7, after the table is created successfully<br></p></p><p><p>The picture is a little blurry, please Forgive Me.<br>Please leave a message if you have Questions.<br>Where is the wrong write please guide the guide thank you .....</p></p> <p><p>IOS Database SQLite</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.