开发中会遇到数据本地化存储的需求,而有些情况下使用数据库是一个不错的选择, 此文会记录下常用的一些数据库操作(FMDB)


  • 数据库的创建
  1. static FMDatabase *db;
  2. db= [FMDatabase databaseWithPath:dbPath];
  3. [db open]

  • 表的创建

CREATE TABLE 语句的基本语法如下:

  1. CREATE TABLE database_name.table_name(
  2. column1 datatype PRIMARY KEY(one or more columns),
  3. column2 datatype,
  4. column3 datatype,
  5. .....
  6. columnN datatype,
  7. );

实例:

  1. sql = @"CREATE TABLE IF NOT EXISTS tableName (id integer PRIMARY KEY AUTOINCREMENT, bid text NOT NULL, json text NOT NULL, update_time real NULL)";
  2. [db executeUpdate:sql]
  • 表的删除

基本语法

DROP TABLE database_name.table_name;

实例

  1. sql = @"DROP TABLE tableName";
  2. [db executeUpdate:sql]

单张表的基本操作: 增、删、改、查

  • 增(INSERT)

基本语法

  1. INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
  2. VALUES (value1, value2, value3,...valueN);

如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。

  1. INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL
  7. );
  8. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  9. VALUES (1, 'Paul', 32, 'California', 20000.00 );
  10. 或者
  11. INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
  • 删(DELETE)

基本语法( WHERE 子句可选)

  1. DELETE FROM table_name
  2. WHERE [condition];
  • 改(UPDATE)

基本语法( WHERE 子句可选)

  1. UPDATE table_name
  2. SET column1 = value1, column2 = value2...., columnN = valueN
  3. WHERE [condition];
  • 查(SELECT)

基本语法( WHERE 子句可选)

  1. SELECT column1, column2, columnN FROM table_name
  2. WHERE [condition];

一些常用子句

  • WHERE 子句
  1. WHERE [condition1] AND [condition2]...AND [conditionN];
  2. WHERE [condition1] OR [condition2]...OR [conditionN]
  • Limit 子句
  1. LIMIT [no of rows]
  2. LIMIT [no of rows] OFFSET [row num]
  • 排序(Order By)

ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。

  1. [ORDER BY column1, column2, .. columnN] [ASC | DESC];

事务

  1. //1.开启事务
  2. [db beginTransaction];
  3. @try {
  4. //2.在事务中执行任务
  5. 执行sql语句1
  6. 执行sql语句2
  7. ...
  8. 执行sql语句N
  9. [db commit];
  10. }@catch(NSException *exception) {
  11. //3.在事务中执行任务失败,退回开启事务之前的状态
  12. [db rollback];
  13. }

COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以来的所有事务保存到数据库。

ROLLBACK 命令只能用于撤销自上次发出 COMMIT 或 ROLLBACK 命令以来的事务。