// colum/列/字段
// row/行/记录
// 主键的作用是唯一标识一条记录
// sql语句注意:不区分大小写,以分号结束
// 如果增加字段,可能要指定数据类型,SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型。
http://www.cnblogs.com/shenliang123/archive/2012/04/07/2435908.html
先声明两个必须变量:
{ NSString *path; //数据库的存储路径 } @property (nonatomic,strong)FMDatabase *dataBase;
1. 创建数据库
//1.创建一个数据库文件存放的位置路径 path=[NSHomeDirectory() stringByAppendingString:@"/Documents/users.db"]; //2.创建FMDatabase对象 并用数据库文件路径初始化 _dataBase=[FMDatabase databaseWithPath:path]; //3.打开数据库 if([_dataBase open]){ NSLog(@"数据库成功打开"); }else { NSLog(@"数据库打开失败"); } //4.关闭数据库 [_dataBase close]; // 为什么要关闭数据库? // 注意:每一次对数据库操作(增删改查)的时候,重新打开数据库,然后关闭,以免数据库,一直保持打开状态,造成不必要的资源消耗
2. 创建表
NSString *sql=@"CREATE TABLE if not exists users (id integer primary key autoincrement,name VARCHAR(20),age VARCHAR(10));"; // sql语句为什么一般都用大写? // 在iOS开发里面,为了区别sql的关键字,与表名或者列名,以及变量名区分,sql 语句通常都是用大写来标示 // 如果id设置为自动增长的话,那么把表中的数据删除后,重新插入新的数据,id的编号不是从0开始,而是接着之前的id进行编号。PRIMARY KEY AUTOINCREMENT, 也就是这句话。 //1.打开数据库 if ([_dataBase open]) { //2.执行sql语句 [_dataBase executeUpdate:sql]; }else{ NSLog(@"数据库打开失败"); } //3.关闭数据库 [_dataBase close];
3. 插入数据
NSString *her=@"张三"; NSString *sql=@"INSERT INTO users (name = ?,age = ?);"; // NSString *[email protected]"INSERT INTO users (name,age) VALUES (?,?);"; // executeUpdateWithFormat : 不确定的参数用%@、%d等来占位 //1. if([_dataBase open]){ //2. 插入单条数据 [_dataBase executeUpdate:sql]; [_dataBase executeUpdateWithFormat:@"INSERT INTO users (name,age) VALUES (%@,%d);",her,24]; //多次插入 for(int i=0;i<1000;i++){ [_dataBase executeUpdateWithFormat:@"INSERT INTO users (name,age) VALUES (%@,%d);",@"刘亦菲",24+i]; } }else{ NSLog(@"打开数据库失败"); } //3. [_dataBase close];
4. 删除数据
NSString *sql=@"DELETE FROM users WHERE name = ‘范冰冰‘;"; //1. if([_dataBase open]){ //2. [_dataBase executeUpdate:sql]; }else { NSLog(@"数据库打开失败"); } //3. [_dataBase close];
5. 修改数据
NSString *sql=@"UPDATE users SET name = ? WHERE id > 1;"; //1. if ([_dataBase open]) { //2. [_dataBase executeUpdate:sql,@"杨颖"]; }else{ NSLog(@"数据库打开失败"); } //3. [_dataBase close];
如果是升级,可能要增加字段,注意删除字段是不支持的。增加字段可以这样:
NSString *sql=@"ALTER TABLE users ADD COLUMN sex bit"; //增加sex字段
6. 查询数据
NSString *sql=@"SELECT * FROM users"; //NSString *[email protected]"SELECT * FROM users WHERE id > ?;"; //1. if ([_dataBase open]) { //2. // 查询语句查询到的是一个集合, FMResultSet *set=[_dataBase executeQuery:sql]; // 遍历查询到的结果集合 while ([set next]) { //NSInteger ID=[set intForColumn:@"id"]; NSString *name=[set stringForColumn:@"name"]; NSString *age=[set stringForColumn:@"age"]; NSLog(@"name:%@ age:%@",name,age); } }else{ NSLog(@"数据库打开失败"); } //3. [_dataBase close];
分页查询:
NSString *sql=@"SELECT * FROM users ORDER BY age DESC LIMIT 0,5;"; //ORDER BY age DESC 先降序 //LIMIT 0,5 跳过0条记录,取5条记录
时间: 2024-10-24 20:33:55