微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite数据库操作流程

<span style="font-family: Arial,Helvetica,sans-serif;"></span><pre name="code" class="objc">
sqlite常用函数:
打开数据库sqlite3_open();
关闭数据库sqlite3_close();
执行sql语句:      sqlite3_exec();
编译sql语句:     sqlite3_prepare_v2();
执行查询sql语句:  sqlite3_setp();
结束sql语句:     sqlite3_finalize();
绑定参数:        sqlite3_bind_text();
查询字段上的数据: sqlite3_column_text();


新建一个类继承于NSObject 添加系统库libsqlite3.dylib 并导入文件
#import <sqlite3.h>
 
 
//创建表</span>
- (BOOL)createTable
{
    
//        1.打开数据库
    
//     (1)动态获取doc目录  设置存储数据库目录
    Nsstring *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];
    
//    (2)拼接路径
    Nsstring *sqlPath = [doc stringByAppendingPathComponent:@"myData.sqlite"];
    
//    (3)声明一个数据库变量
    sqlite3 *sqlite = nil;
    
//    (4)打开数据库  :如果有数据库则直接打开,如果没有则创建
    int open = sqlite3_open([sqlPath UTF8String],&sqlite);
   
//    (5)如果打开数据库失败了
    if (open != sqlITE_OK) {
        NSLog(@"打开失败");
        return NO;
    }
    
    
//        2.写sql数据
    Nsstring *sql = @"CREATE TABLE if not exists user(user_name text,user_age integer,user_id integer )";
    
//    (1)执行语句
    char *error = nil;
   int exec = sqlite3_exec(sqlite,[sql UTF8String],NULL,&error);

//   (2)如果执行语句失败了
    if (exec != sqlITE_OK) {
        NSLog(@"执行失败");
        sqlite3_close(sqlite);
        return NO;
    }
    
//      3.关闭数据库
    sqlite3_close(sqlite);
    
    return YES;
}


//插入数据
- (BOOL)insertData:(usermodel *)model
{
//    1.打开数据库
    //     (1)动态获取doc目录  设置存储数据库目录
    Nsstring *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES) lastObject];
    
    //    (2)拼接路径
    Nsstring *sqlPath = [doc stringByAppendingPathComponent:@"myData.sqlite"];
    
    //    (3)声明一个数据库变量
    sqlite3 *sqlite = nil;
    
    //    (4)打开数据库  :如果有数据库则直接打开,如果没有则创建
    int result = sqlite3_open([sqlPath UTF8String],&sqlite);
    
    //    (5)如果打开数据库失败了
    if (result != sqlITE_OK) {
        NSLog(@"打开失败");
        return NO;
    }

//     2.编写sql数据  ?是占位符
    Nsstring *sql = @"insert into user(user_name,user_age,user_ID) values(?,?,?)";
    
//    3.编译sql语句
    //    (1)声明数据库句柄
   sqlite3_stmt *stmt = nil;
    
    //    (2)编译sql语句
   result = sqlite3_prepare_v2(sqlite,-1,&stmt,NULL);
   
    //    (3)如果编译失败了
    if (result != sqlITE_OK) {
        NSLog(@"编译失败");
        
    // 关闭数据库
    sqlite3_close(sqlite);
        
    }
    
   //    (4)绑定数据  int:?的位置 从1开始
   //    需要绑定的数据
    Nsstring *name = model.name;
    NSInteger age = model.age;
    NSInteger ID = model.ID;
    
    sqlite3_bind_text(stmt,1,[name UTF8String],nil);
    sqlite3_bind_int64(stmt,2,age);
    sqlite3_bind_int64(stmt,3,ID);
    
//    4.执行sql语句
    result = sqlite3_step(stmt);
    
    if (result != sqlITE_DONE) {
        
        NSLog(@"执行语句失败");
        
        //关闭数据库
        sqlite3_close(sqlite);
        
        //关闭句柄
        sqlite3_finalize(stmt);
        
    }
    
//    5.关闭数据库和句柄
    
    //关闭数据库
    sqlite3_close(sqlite);
    
    //关闭句柄
    sqlite3_finalize(stmt);
    
    
    return YES;
}

//更新数据
- (BOOL)updateData
{
    //    1.打开数据库
    //     (1)动态获取doc目录  设置存储数据库目录
    Nsstring *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,&sqlite);
    
    //    (5)如果打开数据库失败了
    if (result != sqlITE_OK) {
        NSLog(@"打开失败");
        return NO;
    }
    
    //     2.编写sql数据  ?是占位符
    Nsstring *sql = @"update user set user_name=? where user_age=? ";
    
    //    3.编译sql语句
    //    (1)声明数据库句柄
    sqlite3_stmt *stmt = nil;
    
    //    (2)编译sql语句
    result = sqlite3_prepare_v2(sqlite,NULL);
    
    //    (3)如果编译失败了
    if (result != sqlITE_OK) {
        NSLog(@"编译失败");
        
        // 关闭数据库
        sqlite3_close(sqlite);
        
    }
    
    //    (4)绑定数据  int:?的位置 从1开始
    //    需要绑定的数据
    Nsstring *name = @"孔子";
    NSInteger age = 100;
    
    sqlite3_bind_text(stmt,age);
    
    //    4.执行sql语句
    result = sqlite3_step(stmt);
    
    if (result != sqlITE_DONE) {
        
        NSLog(@"执行语句失败");
        
        //关闭数据库
        sqlite3_close(sqlite);
        
        //关闭句柄
        sqlite3_finalize(stmt);
        
    }
    
    //    5.关闭数据库和句柄
    
    //关闭数据库
    sqlite3_close(sqlite);
    
    //关闭句柄
    sqlite3_finalize(stmt);
    
    
    return YES;
}


//查询语句
- (void)selectData
{
    //    1.打开数据库
    //     (1)动态获取doc目录  设置存储数据库目录
    Nsstring *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,&sqlite);
    
    //    (5)如果打开数据库失败了
    if (result != sqlITE_OK) {
        NSLog(@"打开失败");
    }
    
    //     2.编写sql数据  ?是占位符
    Nsstring *sql = @"select * from user where user_name=?";
    
    //    3.编译sql语句
    //    (1)声明数据库句柄
    sqlite3_stmt *stmt = nil;
    
    //    (2)编译sql语句
    result = sqlite3_prepare_v2(sqlite,NULL);
    
    //    (3)如果编译失败了
    if (result != sqlITE_OK) {
        NSLog(@"编译失败");
        
        // 关闭数据库
        sqlite3_close(sqlite);
        
    }
    
    //    (4)绑定数据  int:?的位置 从1开始
    //    需要绑定的数据
    Nsstring *name = @"孔子";
    
    sqlite3_bind_text(stmt,nil);
    
    //    4.执行sql语句
    result = sqlite3_step(stmt);
    
    //循环遍历后的数据列表
    while (result == sqlITE_ROW) {
        //取出字段为0 的数据
       char *name = (char *)sqlite3_column_text(stmt,0);
        NSInteger age = sqlite3_column_int64(stmt,1);
        NSInteger ID = sqlite3_column_int64(stmt,2);
        //char转字符串
        Nsstring *nameStr = [Nsstring stringWithUTF8String:name];
        
        NSLog(@"%@,%ld,%ld",nameStr,age,ID);
        
        result = sqlite3_step(stmt);
    }
    
    sqlite3_close(sqlite);
    sqlite3_finalize(stmt);

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SQLite架构简单,又有Json计算能力,有时会承担Json文件/RESTful的计算功能,但SQLite不能直接解析Json文件/RESTful,需要用Java代码硬写,或借助第三方类库,最后再拼成insert语句插入数据表,代码非常繁琐,这里就不展示了。参考前面的代码可知,入库的过程比较麻烦,不能只用SQL,还要借助Java或命令行。SPL是现代的数据计算语言,属于简化的面向对象的语言风格,有对象的概念,可以用点号访问属性并进行多步骤计算,但没有继承重载这些内容,不算彻底的面向对象语言。...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。本教程将告诉您如何使用 SQLite 编程,并让你迅速上手。.................................
安卓开发,利用SQLite实现登陆注册功能
相比大多数数据库而言,具有等优势,广泛应用于、等领域。
有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数据库,就配置什么数据库即可。4.Users实体类,这个实体类要和数据库一样的,形成一一对应的关系。11.Sqlite数据库,需要在代码里面创建数据库,建立表,再建立数据。8.我们开启MySQL数据库,然后进行调试,看程序的结果。2.安装SqlSugar。
基于Android的背单词软件,功能强大完整。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。说白了就是使用起来轻便简单,