FMDB实现增删改查

先用cocoapods安装FMDB,然后在控制器里引入FMDB

//创建数据库路径
    NSString *doc = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    
    NSString *filePath = [doc stringByAppendingPathComponent:@"db.sqlite"];
    
    //创建数据库
    FMDatabase *db = [FMDatabase databaseWithPath:filePath];
    NSLog(@"%@",filePath);
    
    //交互之前,必须要先打开数据库
    if ([db open]) {
        NSLog(@"打开数据库成功");
        //创建表
      BOOL success =  [db executeUpdate:@"CREATE TABLE student (ID INT PRIMARY KEY,name TEXT ,age INT,gender TEXT)"];
        if (success) {
            NSLog(@"创建表成功");
        }
    }
    
#pragma mark -INSERT INTO 插入语句
    //1
  BOOL success = [db executeUpdate:@"INSERT INTO student (ID,name,age,gender)VALUES (?,?,?,?)",@(123),@"张三",@(23),@"男"];
    
    if (success) {
        NSLog(@"插入数据成功");
    }
    
    //2.
    success = [db executeUpdateWithFormat:@"INSERT INTO student(ID,name,age,gender)VALUES(%d,%@,%d,%@)",124,@"张思",22,@"男"];
    if (success) {
        NSLog(@"插入张思成功");
    }
   
    /*
#pragma mark -DELETE FROM 删除数据
    success = [db executeUpdate:@"DELETE FROM student WHERE ID = ?",@(124)];
    if (success) {
        NSLog(@"删除张思成功");
    }
    
    success = [db executeUpdateWithFormat:@"DELETE FROM student WHERE ID = %d",123];
    if (success) {
        NSLog(@"删除张三成功");
    }
    
    
#pragma mark - DROP TABLE销毁表格
    success = [db executeUpdate:@"DROP TABLE IF EXISTS  student"];
    if (success) {
        NSLog(@"销毁表格成功");
    }
     
     */
     
    
#pragma mark - UPDATE SET 修改内容
    success = [db executeUpdate:@"UPDATE student SET  name=? WHERE name = ?",@"李四",@"张三"];
    if (success) {
        NSLog(@"修改张三成功");
    }
    
    success = [db executeUpdateWithFormat:@"UPDATE student SET name= %@ WHERE name= %@",@"王五",@"张思"];
    if (success) {
        NSLog(@"修改张思成功");
    }
    
#pragma mark - SELECT FROM 查询
    FMResultSet *resultSet = [db executeQuery:@"SELECT * FROM student"];
    
    //输出查询结果
    while ([resultSet next]) {
       // NSInteger ID  = [resultSet intForColumn:@"ID"];
        NSInteger ID1 = [resultSet intForColumnIndex:0];
        NSString *name = [resultSet stringForColumnIndex:1];
        NSInteger age = [resultSet intForColumnIndex:2];
        NSString *gender =[resultSet stringForColumnIndex:3];
        NSLog(@"%ld,%@,%ld,%@",ID1,name,age,gender);
        
    }
    
    FMResultSet *resultS = [db executeQuery:@"SELECT * FROM student WHERE ID = ?",@(123)];
    while([resultS next]) {
        
        NSLog(@"%@",[resultS stringForColumnIndex:1]);
    }
    
#pragma mark - FMDB多线程操作
    
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:filePath];
    //执行操作
    //错误标识 使用__block
    __block BOOL errorFlag = YES;
    [queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
        
        errorFlag &= [db executeUpdate:@"INSERT INTO student (ID,name,age,gender)VALUES(?,?,?,?)",@(125),@"赵四",@(22),@"女"];
        
    }];
    //是否出错
    if (errorFlag) {
        NSLog(@"执行成功,没有出错");
    }
    
}

时间: 2024-10-09 23:04:27

FMDB实现增删改查的相关文章

FMDB的增删改查

+ (ZSDataHandle *)shareDataHandle { static ZSDataHandle *dataHandle = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (dataHandle == nil) { dataHandle = [[ZSDataHandle alloc] init]; } }); return dataHandle; } - (instancetype)in

iOS sqlite 增删改查 简单封装(基于 FMDB)

/** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整体进行操作 * *  根据 model 对象自动建表,字段类型只支持 NSString , NSIteger , float * *  用到 runtime 运行时获取 model 属性 * */ 1 // 2 // AGDatabaseManager.h 3 // 4 // Created by

FMDB的简单介绍,和数据库增删改查的使用

#import <Foundation/Foundation.h> #import "Book.h" #import "FMDatabase.h" @interface FMDBBookHandle : NSObject +(instancetype)sharedFMDB; //创建增删改查单例 -(void)insertBook:(Book *)book; -(void)deleteBook:(Book *)book; -(void)updateBoo

iOS使用sqlite3原生语法进行增删改查以及FMDB的使用

转载自:http://www.cnblogs.com/Steak/p/3802508.html 首先要导入libsqlite3.dylib并且加入头文件#import <sqlite3.h>,在进行增删改查之前还要先把数据库搞进去. 一种方法是从外面拷贝到程序里:http://www.cnblogs.com/Steak/p/3764395.html 另一种方法就是直接创建表,既然是操纵数据库,那么一定有一个数据库对象,sqlite是C库,所以需要一个C变量: 1 @interface DBHa

HBuilder webApp开发 Websql增删改查操作

来源:http://blog.csdn.net/zhuming3834/article/details/51471434 这段时间公司要求我们做原生iOS和安卓的都转做H5开发APP,使用的工具HBuilder.公司这么要求我们也就只能转行做了.大家都是小白,好在公司有两位H5大神,他们先给我们一些代码看看,所以,我们上手也比较快.在做APP的过程中用到了一些本地存储,关于本地存储大家可以看看<App离线本地存储方案> .里面我只说说Web SQL,因为里面的localstorage,plus

Python 模拟SQL对文件进行增删改查

1 #!/usr/bin/env python 2 # _*_ coding:UTF-8 _*_ 3 # __auth__: Dalhhin 4 # Python 3.5.2,Pycharm 2016.3.2 5 # 2017/05/15 6 7 import sys,os 8 9 def where(dbfile,where_list): #条件是一个list 10 11 def and_or_where(sub_where_list): 12 '''获取and或同时含有and.or关键字的条

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

ssm框架搭建+easyui增删改查实现

闲来无事,看了看别人的博客文档也跟着敲了敲,特地记录下来,方便以后学习: spring版本:4.0.6 mybatis版本:3.2.5 所有jar包打包下载:http://pan.baidu.com/s/1qLEaU 1.项目目录结构 其中,controller包下存放控制层文件,dao下存放各个model类相关的数据库操作接口,entity下放置各种model类,mappers下放置各个dao对应的映射文件,service服务层就不说了,放置各种service接口,impl是其具体实现类. 2

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件.这个数据库在data/data/<package_name>/databases里面,其中<package_name>为该安卓app的工程包名,这个目录必须root后才能看到.在Windows,单机的应用程序,存储数据,基本放到一个文件里面,正如游戏的存档,基本就是把当前的游戏状态存到一个用户很难找到的文件里面.每次存档读档就是一个从这个存