Using the IOS SQLite database
Last Update:2015-12-22
Source: Internet
Author: User
<span id="Label3"></p><p><p>About SQLite is a lightweight, cross-platform, open-source database Engine. He has a great advantage in reading and writing efficiency, ease of operation and memory consumption, so it is very popular with mobile Developers. of course, SQLite also because it strives to be simple and efficient, but also restricts its processing of concurrent, massive Data. This blog is mainly about the use of SQLite and open Source Library Fmdb in iOS Development.</p></p><p><p>Demo Address TP</p></p> <ul> <ul> <li>Introduction to commonly used methods</li> </ul> </ul> <ol> <ol> <li>First Open the database</li> </ol> </ol><pre><pre><span style="color: #0000ff;">int</span> result = Sqlite3_open_v2 (filename.utf8string, &db, sqlite_ioerr_read| sqlite_ioerr_write| <span style="color: #000000;">sqlite_open_create, NULL); </span> <span style="color: #0000ff;">if</span> (result = =<span style="color: #000000;"> sqlite_ok) { NSLog (</span><span style="color: #800000;">@ "</span><span style="color: #800000;">open True</span><span style="color: #800000;">"</span><span style="color: #000000;">); }</span></pre></pre><p><p>2. Create a table</p></p><pre><pre><span style="color: #008000;">//</span> <span style="color: #008000;">Create a table</span> <span style="color: #0000ff;">Const</span> <span style="color: #0000ff;">Char</span> <span style="color: #800000;">"</span> <span style="color: #800000;">CREATE TABLE IF not EXISTS t_demo (id integer PRIMARY KEY autoincrement,name text not null,age integer not NULL);</span> <span style="color: #800000;">"</span> <span style="color: #000000;">; </span> <span style="color: #0000ff;">char</span> *errmsg =<span style="color: #000000;"> NULL; </span> = sqlite3_exec (db, sqlcreate, null, null, &<span style="color: #000000;">errmsg); </span> <span style="color: #0000ff;">if</span> (result = =<span style="color: #000000;"> sqlite_ok) { NSLog (</span><span style="color: #800000;">@ "</span><span style="color: #800000;">create True</span><span style="color: #800000;">"</span><span style="color: #000000;">); }</span></pre></pre><p><p>3. Execute SQL statements</p></p><pre><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Execute SQL statement</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Insert</span></span>NSString *sqlinsert = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">INSERT into T_demo (name,age) VALUES ('%@ ', '%d ');</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;"></span> one</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800080;"><span style="color: #800080;"></span> +</span><span style="color: #000000;"><span style="color: #000000;">]; Sqlite3_exec (db, sqlinsert.utf8string, null, null,</span></span>&<span style="color: #000000;"><span style="color: #000000;">errmsg); Sqlite3_exec (db, sqlinsert.utf8string, null, null,</span></span>&<span style="color: #000000;"><span style="color: #000000;">errmsg); Sqlite3_exec (db, sqlinsert.utf8string, null, null,</span></span>&<span style="color: #000000;"><span style="color: #000000;">errmsg); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span><span style="color: #000000;"><span style="color: #000000;">(errmsg) {NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Insert False</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: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Enquiry</span></span>NSString *sqlquery = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">SELECT id,name,age from t_demo;</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; Sqlite3_stmt</span></span>*STMT =<span style="color: #000000;"><span style="color: #000000;">NULL; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">prepare to execute statement</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(SQLITE3_PREPARE_V2 (db, sqlquery.utf8string,-<span style="color: #800080;"><span style="color: #800080;">1</span></span>, &stmt, NULL) = =<span style="color: #000000;"><span style="color: #000000;">Sqlite_ok) { </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Step into the execution of</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span>(sqlite3_step (stmt) = =<span style="color: #000000;"><span style="color: #000000;">Sqlite_row) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>ID = Sqlite3_column_int (stmt,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span>Unsigned<span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*name = Sqlite3_column_text (stmt,<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;">int</span></span>Age = Sqlite3_column_int (stmt,<span style="color: #800080;"><span style="color: #800080;">2</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;">%d***%s******%d</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, id,name,age); } } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Release</span></span>Sqlite3_free (stmt);</pre> <ul> <ul> <li>Introduction to commonly used methods</li> </ul> </ul> <ol> <ol> <li>Open Database</li> </ol> </ol><pre><span style="color: #000000;"><span style="color: #000000;">Sqlite3_open_v2 (</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*filename,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Database name</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;">Sqlite3</span></span>**ppdb,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">DB Instance</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Flags<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Flags</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*zvfs<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Name of the VFS module</span> to use</span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;"> );</span></span></pre><p><p>2. Execute SQL statements</p></p><pre><span style="color: #000000;"><span style="color: #000000;">sqlite3_exec (sqlite3</span></span>*,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">DB Instance</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*sql,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">SQL statements</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>(*callback) (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>**,<span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>**),<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Callback function</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>*,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">1st argument to callback</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>**errmsg<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Error msg Written</span> here</span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;"> );</span></span></pre><p><p>3. Check SQL statement syntax</p></p><pre><span style="color: #000000;"><span style="color: #000000;">SQLITE3_PREPARE_V2 (sqlite3</span></span>*db,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">DB Instance</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*zsql,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">SQL statements</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>nbyte,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Maximum length of zsql in Bytes.</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;">sqlite3_stmt</span></span>**ppstmt,<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">out:statement Handle</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>**pztail<span style="color: #008000;"><span style="color: #008000;">/*</span></span><span style="color: #008000;"><span style="color: #008000;">Out:pointer to unused portion of Zsql</span></span><span style="color: #008000;"><span style="color: #008000;">*/</span></span><span style="color: #000000;"><span style="color: #000000;"> );</span></span></pre><p><p>4. Query a row of data, if the query to a row of data, will return Sqlite_row</p></p><pre><pre> Sqlite3_step (sqlite3_stmt*);</pre></pre><p><p>5. Using stmt to get the value of a column</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">Double</span></span>Sqlite3_column_double (sqlite3_stmt*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>icol);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">floating point Data</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>Sqlite3_column_int (sqlite3_stmt*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>icol);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Integral type Data</span></span>Sqlite3_int64 Sqlite3_column_int64 (sqlite3_stmt*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>icol);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Long-integer Data</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>*sqlite3_column_blob (sqlite3_stmt*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>icol);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">binary <span style="color: #008000;">Text Data</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span>Unsigned<span style="color: #0000ff;"><span style="color: #0000ff;">Char</span></span>*sqlite3_column_text (sqlite3_stmt*,<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span>icol);<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">String Data</span></span></pre><p><p>FMDB is a package for Sqlite. Source Address https://github.com/ccgus/fmdb, operation is the OC method, which is not familiar with or do not want to operate the C language method of the students is a relief.</p></p><p><p>First import the SQLite system library, introduce the header file #import "FMDB.h"</p></p><pre>NSString *docdic =<span style="color: #000000;"><span style="color: #000000;">[nssearchpathfordirectoriesindomains (nsdocumentdirectory, nsuserdomainmask, YES) lastobject]; NSString</span></span>*filename = [docdic stringbyappendingpathcomponent:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">fmdb.db</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: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">Create database <span style="color: #008000;">with empty path, CREATE database in memory</span></span>Fmdb =<span style="color: #000000;"><span style="color: #000000;">[fmdatabase databasewithpath:filename]; [fmdb open]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Execute SQL statements, add, delete, change are executeupdate methods</span></span>NSString *sqlcreate =<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">CREATE TABLE IF not EXISTS t_demo (id integer PRIMARY KEY autoincrement,name text not null,age integer not NULL); </span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">; BOOL Res</span></span>=<span style="color: #000000;"><span style="color: #000000;">[fmdb executeupdate:sqlcreate]; NSString</span></span>*sqlinsert = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">INSERT into T_demo (name,age) VALUES ('%@ ', '%d ');</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;"></span> one</span><span style="color: #800000;"><span style="color: #800000;">"</span></span>,<span style="color: #800080;"><span style="color: #800080;"></span> +</span><span style="color: #000000;"><span style="color: #000000;">]; Res</span></span>=<span style="color: #000000;"><span style="color: #000000;">[fmdb executeupdate:sqlinsert]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(!<span style="color: #000000;"><span style="color: #000000;">res) {NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">error when creating DB table</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;">Else</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;">success to creating DB table</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: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Execute Query</span></span>NSString *sqlquery = [nsstring stringwithformat:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">SELECT id,name,age from t_demo;</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;">[fmdb executequery:sqlquery]; </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>Id = [rs intforcolumn:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ID</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSString</span></span>* Name = [rs stringforcolumn:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">name</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSString</span></span>* age = [rs Stringforcolumn:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;"></span> age</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;">ID =%d, name =%@, age =%@</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, Id, name, age); }</span></span></pre><p><p></p></p><p><p>Using the IOS SQLite database</p></p></span>