一、常用方法

sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似

sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(),   打开数据库,没有数据库时创建。
sqlite3_exec(),   执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
Sqlite3_close(), 关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据

二、创建表

创建表的时候需要预处理和执行创建两个过程

执行创建的时多选择sqlite3_step

三、相关代码

1、打开或者创建数据库

 sqlite3 *sqlDataBase;

-(BOOL)createOrOpen:(NSString *)dbName

{

    //获取用户域覆径信息

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:];

    /**

     *Users/admin/Library/Application Support/iPhone Simulator/7.1/Applications/8E23557E-AAA6-471A-AAFE-E036BF1B7E4C/Library/Documentation

     *判断用户域是否有数据库dbNmae

     */

    NSString *path = [documentsDirectory stringByAppendingPathComponent:dbName];

    NSFileManager *fileManageer = [NSFileManager defaultManager];

    //如果用户域内有该数据库,则返回yes,否则返回NO

    BOOL find = [fileManageer fileExistsAtPath:path];

    if(find)   //对找到进行处理,如果找到了,并且打开了,则返回yes

    {

        //打开该数据库,如果打开失败,则返回NO,否则返回yes

        if(sqlite3_open([path UTF8String], &sqlDataBase)!= SQLITE_OK)

           {

               //关闭sqlDataBase,实际是释放了它

               sqlite3_close(sqlDataBase);

               return NO;

           }

           return YES;

    }

    NSLog(@"%d",sqlite3_open([path UTF8String], &sqlDataBase));

           //创建数据库,创建返回yes,并且打开数据库,否则返回NO

    if(sqlite3_open([path UTF8String], &sqlDataBase)==SQLITE_OK)

    {

        return YES;

    }else

    {

     //关闭sqlDataBase,实际是释放了它

        sqlite3_close(sqlDataBase);

        return NO;

    }

    return NO;

}

2、插入数据

//向表中插入数据

-(void)insertMBkey:(NSString *)key

{

    BOOL isOK = NO;

    sqlite3_stmt *statement;

    static char *sql = "INSERT INTO user VALUES ('1', 'Bill', '河南', 'ssss','2')";

    int success = sqlite3_prepare_v2(sqlDataBase, sql, -, &statement, NULL);

    if(success !=SQLITE_OK)

    {

        isOK = NO;

    }else

    {

        sqlite3_bind_text(statement, , [key UTF8String], -, SQLITE_TRANSIENT);

        success = sqlite3_step(statement);

        sqlite3_finalize(statement);

    }

    if(success ==SQLITE_ERROR)

    {

        isOK = NO;

    }else

    {

        isOK=YES;

    }

    return;

}

3、查询数据

//查询数据

-(void)GetList:(NSMutableArray *)KeysList

{

    BOOL  isOK = NO;

    sqlite3_stmt *statement;

    static char *sql = "select id,address from user";

    int success = sqlite3_prepare_v2(sqlDataBase, sql, -, &statement, NULL);

    if(success !=SQLITE_OK)

    {

        isOK = NO;

    }else

    {

        //查询结果集中一条一条地遍历所有记录,这里的数字对应的时列值

        while (sqlite3_step(statement)==SQLITE_ROW) {

            int kid = sqlite3_column_int(statement, );

            char *key = (char  *)sqlite3_column_text(statement, );

            UserInfo *userModel = [[UserInfo alloc] init];

                userModel.userId =kid;

            if (key) {

              userModel.userAddress = [NSString stringWithUTF8String:key];

            }

                [KeysList addObject:userModel];

            sqlite3_finalize(statement);

        }

        NSLog(@"%@",KeysList);

        if(success==SQLITE_ERROR)

        {

            isOK = NO;

        }else

        {

            isOK = YES;

        }

        return;

    }

}

SQLite基本操作-----IOS(如有雷同,纯属巧合)的更多相关文章

  1. XCode 4.3 Unable to load persistent store UserDictionary.sqlite 以及 ios simulator failed to install the application

    I have been working on an iOS app for some time, all of a sudden I am getting the following crash ev ...

  2. 练习一:SQLite基本操作

    一.基础知识: 运用场景: 1>应用运行需要保存一系列有一定关系有一定结构的数据(文本也可以但是存储效率低) 2>文件类型:.db(一个数据库就是一个.db文件) 3>路径:/dat ...

  3. Android 的 Sqlite基本操作

    在 SQL 数据库中保存数据 使用数据库 将数据保存到数据库对于重复或结构化数据(比如契约信息)而言是理想之选. 本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQL ...

  4. sqlite基本操作

    sqlite准备步骤; .下载:https://www.sqlite.org/download.html: sqlite-dll-win64-3250200.zip 和 sqlite-tools-wi ...

  5. 【转】C# 对sqlite基本操作,带批量插入

    原文地址:https://download.csdn.net/download/mic_gary/10154869 public class SQLiteHelper { //数据库连接字符串 pub ...

  6. Android的SQLite基本操作

    涉及SQLite的增删改查,结果用log显示 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  7. iOS开发之Masonry框架源码深度解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  8. iOS开发之Masonry框架源码解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  9. IOS OC 计算器算法(不考虑优先级)

    个人见解:为还在计算器算法方面迷惑的同学一个数据处理解决方案:定义一个可变数组array,一个可变字符串str,使字符通过[array addObject:str];方法添加到可变数组,每当触发运算符 ...

随机推荐

  1. ACM学习<二>

    穷举算法思想:     一句话:就是从所有可能的情况,搜索出正确的答案. 步骤:     1.对于一种可能的情况,计算其结果.     2.判断结果是否满足,YES计算下一个,no继续步骤1,然后判断 ...

  2. nginx ngx_http_sub_module使用

    ngx_http_sub_module模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘iuwai’全部替换成‘aaaaa‘,这个模块已经内置在nginx中,但是默认未安装,需要 ...

  3. zookeeper集群操作【这里只说明简单的操作步骤,zk的相关参数、说明请参考官方文档】

      本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作.        [这里是在一台机器上搭建的 zk伪集群] 1.从官网下载下载zk http://apa ...

  4. Linux命令yum和rpm

    yum命令使用 可以简化软件安装命令 yum可以做软件的 1自动安装,安装软件的时候会自动安装需要的依赖 yum install 软件名如安装epel源yum install epel-release ...

  5. WC2017游记 & 能力残废康复计划

    懒癌晚期的蒟蒻一年多没有更Blog了… 这次冬眠营去绍一省好好地游玩了一番,体验了一段时间的豪华自助餐,成功吃胖… 第一课堂的东西基本还是没吸收…听着觉得有点道理,结果过几分钟就忘了…可能最大的收获就 ...

  6. php获取父目录的方法 dirname()

    dirname() 方法,获取父目录的方法,官方文档:http://php.net/manual/en/function.dirname.php 在 php 7.0 后,dirname() 支持两个参 ...

  7. 微信公众平台.net HttpClient 异步客户端

    微信公众平台.net HttpClient 异步客户端 该客户端实现了对微信公众平台的后台管理,包括获取Token,发生客服消息(文本,图片,语音,视频),自定义菜单的创建,查询,删除,查询订阅用户, ...

  8. Java技术开发中的坑

    1.(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑 今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生 ...

  9. Mybatis 3 配置 Log4j

    Mybatis与Log4j 最常用的日志输出是Log4j,将相应的jar包和配置文件放到相应的位置,Mybatis就可以通过Log4j将SQL语句打印出来. 配置Log4j.properties 将l ...

  10. 【手记】解决excel无法设置单元格颜色且界面怪异+桌面图标文字老有色块等问题

    注:问题是在XP上遇到的,不知道是否适用其它系统 问题现象 excel 2010成这样了: 关键是设置不了单元格颜色,无论是文字颜色还是背景色都设置不了,设了没变化.同时会发现桌面图标的文字总有底色: ...