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...