• iOS SQLite 2015.10.30


    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查

    实现简单 SQLite数据库操作 的 demo 具体过程:

    1.创建名为 SQLite_Manage 的.h .m 文件,导入头文件 <sqlite3.h>

    2.数据库在一个app中只有一个,使用单例模式:(代码如下)

    复制代码
    1 + (SQLite_Manager *)sharedManager{
    2     static SQLite_Manager *manager = nil;
    3     static dispatch_once_t onceToken;
    4     dispatch_once(&onceToken, ^{
    5         manager = [[SQLite_Manager alloc]init];
    6     });
    7     return manager;
    8 }
    复制代码

    3.打开数据库,代码如下:

    复制代码
     1 - (void)open{
     2     //document路径
     3     NSString *docment = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
     4     //sqlite 路径
     5     NSString *sqlitePath = [docment stringByAppendingPathComponent:@"database.sqlite"];
     6     //打开数据库
     7     int result = sqlite3_open(sqlitePath.UTF8String, &db);
     8     //判断数据库是否打开成功
     9     if (result == SQLITE_OK) {
    10         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"打开成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    11         [alertView show];
    12     }else {
    13         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"打开失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    14         [alertView show];
    15     }
    16 }
    复制代码

    4.创建表,代码如下:

    复制代码
     1 - (void)creatTable{
     2     //sql语句
     3     NSString *sqlString = @"create table Person (id integer primary key,name text,age integer)";
     4     //执行SQL语句
     5     char *error = nil;
     6     sqlite3_exec(db, sqlString.UTF8String, nil, nil, &error);
     7     
     8     //判断是否出现了错误
     9     if (error == nil){
    10         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"创建表成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    11         [alertView show];
    12     }else {
    13         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"创建表失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    14         [alertView show];
    15     }
    16 }
    复制代码

    5.插入数据,代码如下:

    复制代码
     1 - (void)insert{
     2     //sql语句
     3     NSString *sqlString = @"insert into Person ('name','age') values ('Ager',18)";
     4     //执行SQL语句
     5     char *error = nil;
     6     sqlite3_exec(db, sqlString.UTF8String, nil, nil, &error);
     7     //判断是否出现了错误
     8     if (error == nil){
     9         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"插入数据成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    10         [alertView show];
    11     }else {
    12         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"插入数据失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    13         [alertView show];
    14     }
    15 
    16 }
    复制代码

    6.修改数据,代码如下:

    复制代码
     1 - (void)update{
     2     //sql语句
     3     NSString *sqlString = @"update Person set 'name' = 'Arun' where id = 1";
     4     //执行sql语句
     5     char *error = nil;
     6     sqlite3_exec(db, sqlString.UTF8String, nil, nil, &error);
     7     
     8     //判断是否出现了错误
     9     if (error == nil){
    10         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"数据更新成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    11         [alertView show];
    12     }else {
    13         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"数据更新失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    14         [alertView show];
    15     }
    16 }
    复制代码

    7.查询数据,代码如下:

    复制代码
     1 - (void)select{
     2     //sql语句
     3     NSString *sqlString = @"select * from Person";
     4     //准备sql
     5     sqlite3_stmt *stmt = nil;
     6     sqlite3_prepare(db, sqlString.UTF8String,-1, &stmt, nil);
     7     //单步执行语句
     8     while (sqlite3_step(stmt) == SQLITE_ROW) {
     9         int ID = sqlite3_column_int(stmt, 0);
    10         const unsigned char *name = sqlite3_column_text(stmt, 1);
    11         int age = sqlite3_column_int(stmt, 2);
    12         NSLog(@"%d,%s,%d",ID,name,age);
    13     }
    14     sqlite3_finalize(stmt);
    15 }
    复制代码

    8.删除数据,代码如下:

    复制代码
     1 - (void)deleteData{
     2     //sql语句
     3     NSString *sqlString = @"delete from Person where id = 1";
     4     //执行sql语句
     5     char *error = nil;
     6     sqlite3_exec(db, sqlString.UTF8String, nil, nil, &error);
     7     //判断是否出现了错误
     8     if (error == nil){
     9         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"删除成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    10         [alertView show];
    11     }else {
    12         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"删除失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    13         [alertView show];
    14     }
    15 }
    复制代码

    9.关闭数据库,代码如下:

    复制代码
     1 - (void)close{
     2     //关闭数据库
     3     int result = sqlite3_close(db);
     4     //判断数据库是否关闭成功
     5     if (result == SQLITE_OK) {
     6         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"关闭成功" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
     7         [alertView show];
     8     }else {
     9         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"数据库执行结果" message:@"关闭失败" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    10         [alertView show];
    11     }
    12 }
    复制代码
  • 相关阅读:
    jmeter如何引用自己编写的java文件编译的jar包
    Vue+Django REST framework 打造生鲜电商项目(学习笔记二)
    mysql笔试题
    面试遇到的问题
    Idea中maven项目pom文件中已引入testng但项目文件中无法引入@Test
    记录一次TestNg+MyBatis中的SqlSession出现的问题,问题虽然解决了但尚未明白问题原因
    PyMySQL的基本操作
    MySQL循环语句
    Vue父子组件和非父子组件间的通信
    Python的静态方法和类成员方法
  • 原文地址:https://www.cnblogs.com/leilei123/p/4922724.html
Copyright © 2020-2023  润新知