專案很多要用到資料庫,資料庫語句有時候容易忘記,所以把常用的一些簡單語句寫下來,以後忘記了可以直接來部落格複製,哈哈
專案中首先加入libsqlite3.dylib這個函式庫。
一.例項化fmdatabase
//讀取資料庫
-(fmdatabase* )loaddb:(nsstring *)dbname
return db;
}
也可以用工具在外部設計好資料庫,拖進專案中,專案沒找到資料庫時,直接把專案中的資料庫拷貝到document中
-(fmdatabase* )loaddb:(nsstring *)dbname
//建立資料庫例項 db 這裡說明下:如果路徑中不存在"test.db"的檔案,sqlite會自動建立"test.db"
fmdatabase *db= [fmdatabase databasewithpath:localdbpath];
if (![db open])
return db;
}
二.建立表
/*
注意:在建立table 時設定的字段預設是允許為空的,即allow null
*///1、建立乙個名為table1的表,有三個字段分別為string型別的name、age、***
[db executeupdate:@"create table if not exists table1 (name text,age text,*** text)"];
//2、建立乙個名為table2的表,id欄位自增(即:序號)
//not null表示不用需為空值
[db executeupdate:@"create table if not exists table2 (id integer primary key autoincrement not null,name text,age text not null,*** text)"];
三.插入
bool bool2 = [db executeupdate:@"insert into table1 (name,age,***)values(?,?,?)",@"name1",@"10",@"男"];
nslog(@"insert %@!",bool2?@"success":@"faile");
四.更新
bool bool3 = [db executeupdate:@"update table1 set age=?",@"12"];
nslog(@"update %@!",bool3?@"success":@"faile");
bool bool4 = [db executeupdate:@"update table1 set age=? where name=? and ***=?",@"12",@"name1",@"男"];
nslog(@"update %@!",bool4?@"success":@"faile");
五.刪除
//刪除資料
bool bool5 = [db executeupdate:@"delete from table1 where name = ?",@"name1"];
nslog(@"delete %@!",bool5?@"success":@"faile");
六.查詢
取得特定的資料,則需使用fmresultset物件接收傳回的內容:
//用[rs next]可以輪詢query回來的資料,每一次的next可以得到乙個row裡對應的數值,並用[rs stringforcolumn:]或[rs intforcolumn:]等方法把值轉成object-c的型態。取用完資料後則用[rs close]把結果關閉。
fmresultset *rs = [db executequery:@"select name, age, from table1"];
while ([rs next])
[rs close]
#define query_key(rs,key) ([rs stringforcolumn:key]?[rs stringforcolumn:key]:@"")
fmresultset *rs=[db executequery:@"select * from table2 where ***=? order by age desc",@"男"];
/*(注: asc 表示公升序 , desc表示降序 , 未明確寫明排序方式時預設是公升序)*/
if (rs != nil &&[rs columncount]>0)
}[db close];
[rs close];
1、查所有演員名字開頭叫茱蒂的電影('%' 符號便是 sql 的萬用字元):
select * from film where starring like 'jodie%';
2、查所有演員名字以茱蒂開頭、年份晚於2023年、年份晚的優先列出、最多十筆,只列出電影名稱和年份:
select title, year from film where starring like 'jodie%' and year >= 1985 order by year desc limit 10;
3、有時候我們只想知道資料庫一共有多少筆資料:
select count(*) from film;
4、有時候我們只想知道2023年以後的電影有幾部:
select count(*) from film where year >= 1985;
七.增加列,即:增加字段
bool bool1 = [db executeupdate:@"alter table table2 add number2 text"];
nslog(@"add %@!",bool1?@"success":@"faile");
sqlite 操作 使用FMDB
alter table table name add column column name column type 例如在student表中新增一列名為name,型別為varchar alter table student add column name varchar alter table st...
SQLite與FMDB使用中區別
基本使用區別 1.資料庫的操作物件 1 sqlite通過sqlite3 sqlite3 db 2 fmdb方式 fmdatabase db 2.開啟資料庫方式 1 sqlite方式 void opendb else 2 fmdb方式 void opendb else 3.建立 1 sqlite方式 ...
FMDB對sqlite的操作
首先要先導入第三方類庫fmdatabase 獲得存放資料庫檔案的沙盒位址 nsstring databasefilepath 建立資料庫的操作 void creatdatabase 建立表 void creattable 判斷資料庫是否已經開啟,如果沒有開啟,提示失敗 if dbopen 為資料庫設...