开发中会遇到数据本地化存储的需求,而有些情况下使用数据库是一个不错的选择, 此文会记录下常用的一些数据库操作(FMDB)
- 数据库的创建
static FMDatabase *db;db= [FMDatabase databaseWithPath:dbPath];[db open]
- 表的创建
CREATE TABLE 语句的基本语法如下:
CREATE TABLE database_name.table_name(column1 datatype PRIMARY KEY(one or more columns),column2 datatype,column3 datatype,.....columnN datatype,);
实例:
sql = @"CREATE TABLE IF NOT EXISTS tableName (id integer PRIMARY KEY AUTOINCREMENT, bid text NOT NULL, json text NOT NULL, update_time real NULL)";[db executeUpdate:sql]
- 表的删除
基本语法
DROP TABLE database_name.table_name;
实例
sql = @"DROP TABLE tableName";[db executeUpdate:sql]
单张表的基本操作: 增、删、改、查
- 增(INSERT)
基本语法
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]VALUES (value1, value2, value3,...valueN);
如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Paul', 32, 'California', 20000.00 );或者INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
- 删(DELETE)
基本语法( WHERE 子句可选)
DELETE FROM table_nameWHERE [condition];
- 改(UPDATE)
基本语法( WHERE 子句可选)
UPDATE table_nameSET column1 = value1, column2 = value2...., columnN = valueNWHERE [condition];
- 查(SELECT)
基本语法( WHERE 子句可选)
SELECT column1, column2, columnN FROM table_nameWHERE [condition];
一些常用子句
- WHERE 子句
WHERE [condition1] AND [condition2]...AND [conditionN];WHERE [condition1] OR [condition2]...OR [conditionN]
- Limit 子句
LIMIT [no of rows]LIMIT [no of rows] OFFSET [row num]
- 排序(Order By)
ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
事务
//1.开启事务[db beginTransaction];@try {//2.在事务中执行任务执行sql语句1,执行sql语句2,...执行sql语句N,[db commit];}@catch(NSException *exception) {//3.在事务中执行任务失败,退回开启事务之前的状态[db rollback];}
COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以来的所有事务保存到数据库。
ROLLBACK 命令只能用于撤销自上次发出 COMMIT 或 ROLLBACK 命令以来的事务。
