Sqlite 資料庫 FMDB 簡單使用

2021-07-13 10:28:18 字數 3824 閱讀 1312

1、

通過sqlite建立資料庫。首先匯入框架;

//建立資料庫的路徑;

nsstring

*path = [[

nssearchpathfordirectoriesindomains

(nsdocumentdirectory

,nsuserdomainmask

,yes

)lastobject]:

@"data.sqlite"];

//第乙個引數是c型別的字元創。表示路徑;第二個引數表示資料庫的位址;是

sqlite3 型別,返回的引數可以做為是否建立成功的依據;

intsuccess = 

sqlite3_open

(path.

utf8string

, &_db);

//建立表:使用create關鍵字。非查詢語句都使用這個函式 

sqlite3_exec

;if(success ==

sqlite_ok)

//增加資料:使用insert 關鍵字;

nsstring

*sql = [

nsstring

stringwithformat

:@"insert into t_student (name,score) values ('%@',%f);"

,name,

arc4random_uniform

(8000)/100.0 + 20];

intsuccess = 

sqlite3_exec

(_db

, sql.

utf8string

,null

,null

,null);

//刪除資料:使用delete 關鍵字;where 是設定條件;這裡是 score > 90 的刪除;

nsstring

*sql =

@"delete from t_student where score > 90.0;"

;int

success = 

sqlite3_exec

(_db

, sql.

utf8string

,null

,null

,null);

//更新/修改資料:使用update 和 set 關鍵字;

nsstring

*sql =

@"update t_student set score = 59.9 where score < 60;"

;int

success = 

sqlite3_exec

(_db

, sql.

utf8string

,null

,null

,null);

//查詢資料:使用 select 關鍵字, like是模糊查詢,% 是萬用字元,這裡是查詢名字裡包含 8 這個字元的學生;

nsstring

*sql =

@"select  id,name,score from t_student where name like '%8%'";//

期望結果儲存在

stmt裡面

sqlite3_stmt

*stmt =

nil;

// 準備查詢

其實把查詢結果儲存在

stmt

指標區域中

/*引數的含義:

sqlite3 *db,            資料庫的控制代碼

const char *zsql,       sql語句

int nbyte,              sql語句的最大長度  -1代表無限制;

sqlite3_stmt **ppstmt, 

輸出: statement

控制代碼獲取最終的結果資料

const char **pztail    輸出:

保留引數 */

intsuccess = 

sqlite3_prepare_v2

(_db

, sql.

utf8string

, -1, &stmt,

null); if

(success ==

sqlite_ok) }

1、fmdb資料庫的建立,

fmdb 是對於sqlite的乙個封裝;是基於物件的;

nsstring

*path = [[

nssearchpathfordirectoriesindomains

(nsdocumentdirectory

,nsuserdomainmask

,yes

)lastobject]:

@"datafmdb.sqlite"];

fmdatabase

*database = [

fmdatabase

databasewithpath:path];

self

.database

= database;

bool

success =  [database

open

];     //同過返回值確定是否開啟資料庫;

2、建表語句,插入,刪除,更新都是只用如下方法:

bool

successt=  [

self

.database

executeupdate

:@"create   table if not exists t_student(id integer primary key autoincrement ,name text not null , score real);"];

3、查詢語句:

//建立sql語句

nsstring

*sql =

@"select  id,name,score from t_student where score > 60 and score < 75;"

;fmresultset

*result = [

self

.database 

executequery

:sql];

while

([result

next

])

注意:fmdb封裝了一套執行緒安全的資料庫;

nsstring

*path = [[

nssearchpathfordirectoriesindomains

(nsdocumentdirectory

, nsuserdomainmask

, yes

)lastobject] :

@"data.sqlite"];

fmdatabasequeue

*queue = [

fmdatabasequeue

databasequeuewithpath:path];

self

.queue

= queue; [

self

.queue

indatabase

:^(fmdatabase

*db)

}];

//事務的開啟,當一段資料修改需要一起執行。但是執行一部分之後,程式崩潰了或者停電了;剩下的修改語句不能進行。資料就有可能出錯;事務就有這樣乙個功能,被包裝成事務的一段**,要麼全部執行,要麼都不執行;就可以避免這種情況;

[self

.queue

indatabase

:^(fmdatabase

*db) ];

FMDB資料庫的簡單操作

一直以來對資料庫的操作都感覺很麻煩,每次封裝fmdb的工具類都是一件讓人很頭大的事情,在這記錄一下它的一些常用操作,很方便實用 首先,是常用的資料庫語句 增 insert into 表名 欄位1,欄位2 values 值1,值2 刪 delete from 表名 where 字段 值 查 selec...

SQLite 簡單的資料庫

1.建立資料庫和表 引數1.資料儲存的檔案位置 引數2.檔案建立工廠類,這裡不需要,寫為空 db sqlitedatabase.openorcreatedatabase data data com.coderqi.android2 lesson 04 database database.db nul...

SQLite資料庫簡單使用

二 建立資料庫 sqlite3 student.db 建立名為student的資料庫 sqlite3命令,引數就是資料庫的名稱,如果該資料庫已存在,則使用,如果不存在,則新建乙個 如圖 三 建立表 create table person id integer primary key autoincr...