准备工作:
(1)导入FMDB第三方框架
(2)引入 sqlite3.0框架
(3)在需要使用的 viewController 里面导入 fmdb.h 和 sqlite3.0.h头文件
1.建表
- (void)addTable
{
// 创建数据库存储的路径
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 在路径后面拼接文件名,即创建文件
NSString *dbPath = [documentPath stringByAppendingString:@"Article.sqlite"];
// 打印文件路径
NSLog(@"文件路径:%@", dbPath);
// 初始化数据库
self.database = [FMDatabase databaseWithPath:dbPath];
#pragma mark --- 创建表
[self.database open];
// executeUpdate:@"create table 表名 (列名 类型,..... )"
[self.database executeUpdate:@"create table user (name text, age integer, myData blob)"];
NSLog(@"创建表成功");
[self.database close];
}
2.增加数据
// 增
- (IBAction)addData:(id)sender {
[self.database open];
NSMutableArray *one = [NSMutableArray array];
[one addObject:@"123"];
[one addObject:@"456"];
NSData *data1 = [NSKeyedArchiver archivedDataWithRootObject:one];
FMResultSet *rs = [self.database executeQuery:@"insert into user(name,age,myData) values(?,?,?)" withArgumentsInArray:@[@"张三",@18,data1]];
[rs next];
FMResultSet *rs1 = [self.database executeQuery:@"insert into user(name,age,myData) values(?,?,?)" withArgumentsInArray:@[@"李四",@19,data1]];
[rs1 next];
NSLog(@"***%@", self.database);
if (self.database != NULL) {
NSLog(@"导入数据成功");
}
[self.database close];
}
2.删除数据
- (IBAction)deleteData:(id)sender {
[self.database open];
#pragma mark --- 按条件删除
// [self.database executeUpdateWithFormat:@"delete from user where name = %@", @"李四"];
#pragma mark --- 删除整个表
[self.database executeUpdateWithFormat:@"delete from user"];
NSLog(@"删除数据成功");
[self.database close];
}
4.改数据
- (IBAction)alterData:(id)sender {
[self.database open];
NSString *newName = @"王五";
NSString *oldName = @"张三";
//update 表名 set 新的参数 = 类型 where 旧的参数 = 类型
[self.database executeUpdateWithFormat:@"update user set name = %@ where name = %@",newName,oldName];
NSLog(@"修改数据成功");
[self.database close];
}
5.查找数据
- (IBAction)select:(id)sender {
[self.database open];
#pragma mark --- 按条件查询 按条件查询 [self.database intForQuery(根据类型来写)
// NSInteger age = [self.database intForQuery:@"select age from user where name = ?", @"李四"];
// NSLog(@"%ld", (long)age);
#pragma mark --- 查询整个表 按整个表查询 [self.database executeQuery:@"select * from user"]
FMResultSet *rs = [self.database executeQuery:@"select * from user"];
//[rs next]遍历条件 遍历前为YES 遍历结束为NO
while ([rs next] == YES) {
NSString *name = [rs stringForColumn:@"name"];
NSInteger age = [rs longLongIntForColumn:@"age"];
NSData *data = [rs dataForColumn:@"myData"];
NSMutableArray *testArr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"name = %@, age = %ld, myData = %@", name, age, testArr);
}
NSLog(@"查询数据成功");
[self.database close];
}