14FMDB_DAO

一、FMDB
项目:sqlite_useFMDB0414
(一)使用FMDB准备工作:
1.导入sqlite3静态库
2.将fmdb拖入工程
3.在arc环境下,需要做以下修改:

4.导入FMDB.h

(二)使用FMDB库操作数据库
1.准备工作
①导入sqlite3静态库
②将fmdb拖入工程
③导入FMDB.h

createTable/insert/update/delete:
1.创建数据库对象(相当于句柄)
2.打开数据库
3.调用方法[_db executeUpdate:];
createTable/insert/update/delete
4.关闭数据库

selecte:
1.创建数据库对象(相当于句柄)
2.打开数据库
3.获得结果集[_db executeQuery:];
4.从结果集中逐条查询
5.关闭结果集/数据库

源码:

@interface ViewController ()
{
    __weak IBOutlet UITextField *_nameTf;
    __weak IBOutlet UITextField *_ageTf;
    FMDatabase *_db;
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    //创建数据库对象,用来操作数据库文件(相当于句柄)
    _db = [[FMDatabase alloc]initWithPath:[self getFilePath]];
}

#pragma mark - **************** 获取路径
- (NSString *)getFilePath
{
    NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSLog(@"%@",path);
    return [path stringByAppendingPathComponent:@"student.sqlite"];
}
#pragma mark - **************** 数据库操作
//创建表
- (IBAction)createTable:(UIButton *)sender
{
    //先打开数据库
    BOOL isOpen = [_db open];
    if (isOpen)
    {
        //打开成功,创建表
        //判断表是否存在
        BOOL isExist = [_db tableExists:@"student"];
        if (isExist == NO)
        {
            //不存在表,创建
            [_db executeUpdate:@"create table student(student_id integer primary key autoincrement not null,name text not null,age integer not null)"];
        }
    }
    [_db close];
}
- (IBAction)insertClick:(UIButton *)sender
{
    //1.打开数据库
    BOOL isOpen = [_db open];
    if (isOpen == NO)
    {
        [_db close];
        return;
    }
    [_db executeUpdateWithFormat:@"insert into student (name,age) values (%@,%d)",_nameTf.text,[_ageTf.text integerValue]];
    [_db close];
}
- (IBAction)updateClick:(UIButton *)sender
{
    BOOL isOpen = [_db open];
    if (isOpen == NO)
    {
        [_db close];
        return;
    }
    [_db executeUpdate:@"update student set age = 22 where student_id = 1"];
    [_db close];
}
- (IBAction)deleteClick:(UIButton *)sender
{
    BOOL isOpen = [_db open];
    if (isOpen == NO)
    {
        [_db close];
        return;
    }
    [_db executeUpdate:@"delete from student where age > 22"];
    [_db close];
}
- (IBAction)selectClick:(UIButton *)sender
{
    //1.打开数据库
    BOOL isOpen = [_db open];
    if (isOpen == NO)
    {
        [_db close];
        return;
    }
    //2.获取结果集
    FMResultSet *resultSet = [_db executeQuery:@"select name,age from student where student_id > 1"];
    //3.从结果集中单步查询
    while ([resultSet next] == YES)
    {
        NSString *name = [resultSet stringForColumn:@"name"];
        int age = [resultSet intForColumn:@"age"];
        NSLog(@"%@:%d",name,age);
    }
    [resultSet close];
    [_db close];
}

二、DAO(数据访问对象)
项目:Database_DAO0414
DAO(Data Access Object) 数据访问对象是第一个面向对象的数据库接口,它显露了 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 像直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。

你可能感兴趣的:(14FMDB_DAO)