美文网首页
数据库sqlite

数据库sqlite

作者: 箫声_筱昇 | 来源:发表于2016-07-04 09:56 被阅读35次
  • 首先导入库 libsqlite3.0.tbd
  • 做一个声明
{
sqlite3 *db;//这是指向数据库的指针,我们其他操作用这个指针来完成.
}
  • 打开数据库
- (void)openSqlite{
NSString *str = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [str stringByAppendingPathComponent:@"my.sqlite"];
int result = sqlite3_open([path UTF8String], &db);
if (result == SQLITE_OK){
NSLog(@"数据库打开成功");
}else{
NSLog(@"数据打开失败");
}
}
  • 创建表格
- (void)CreateTable{
//1.准备 sqlite 语句
  NSString *sqlite = [NSString stringWithFormat:@"create table if not exists 'student' ('number' integer primary key autoincrement not null,'name' text,'sex' text,'age' integer)"];
//2执行 sqlite 语句
char *error = NULL;//执行 sqlite 语句失败的时候,会把失败的原因存储到里面.
int result = sqlite3_exec(db, [sqlite UTF8String], NULL,NULL,&error);//因为 sqlite 是 C语言界别的 string 类型参数,所以需要 UTF8String 来惊醒转换.
// 判断
    if (reslut == SQLITE_OK) {
        NSLog(@"OK");
    }else{
        NSLog(@"Fail : %s",error);
    }
}
  • 添加数据的方法
- (void)addStudent:(Student *)stu{
//1.准备 sqlite 语句
    NSString *sqlite = [NSString stringWithFormat:@"insert into student (number,name,sex,age) values ('%ld','%@','%@','%ld')",stu.number,stu.name,stu.sex,stu.age];
    //2执行语句
    char *error = NULL;
    int result = sqlite3_exec(db, [sqlite UTF8String], NULL, NULL, &error);//第三个与第四个参数之所以为空,是为了以后扩展
    // 判断
    if (result == SQLITE_OK) {
        NSLog(@"OK");
    }else{
        NSLog(@"Fail : %s",error);
    }
}
  • 删除数据
//删除数据
- (void)deleteStudent:(Student *)stu{
    NSString *sqlite = [NSString stringWithFormat:@"delete from student where number = %ld",stu.number];
    char *error = NULL;
    int result = sqlite3_exec(db, [sqlite UTF8String], NULL, NULL, &error);//第一个指针,第二个参数 sqlite 二进制
    // 判断
    if (result == SQLITE_OK) {
        NSLog(@"OK");
    }else{
        NSLog(@"Fail : %s",error);
    }
}
  • 查询所有的数据
//查询所有的数据
- (NSMutableArray *)selectStudent:(Student *)stu{
    //1,准备sqlite 语句
    NSString *sqlite = [NSString stringWithFormat:@"select * from student "];
    //2,执行语句
    //伴随指针
    sqlite3_stmt *error = NULL;
    //预执行.用来判断当前的执行的语句是否正确.
    int result = sqlite3_prepare(db, [sqlite UTF8String], -1, &error, NULL);//第三个参数为一次性返回所有的数据.-1为全部返回
    //创建一个数组,用来存储数据
    NSMutableArray  *array = [[NSMutableArray alloc] init];
    
    if (result == SQLITE_OK) {
        NSLog(@"OK");
        while (sqlite3_step(error) == SQLITE_ROW) {
            Student *stu = [[Student alloc] init];
            stu.number = sqlite3_column_int(error, 0);
            stu.name = [NSString stringWithUTF8String:(const char*)sqlite3_column_text(error, 1)];//类型不匹配,需要强转
            stu.sex = [NSString stringWithUTF8String:(const char*)sqlite3_column_text(error, 2)];
            stu.age = sqlite3_column_int(error, 3);
            [array addObject:stu];
        }
    }else{
        NSLog(@"Fail");
    }
    //关闭伴随指针
    sqlite3_finalize(error);
    return array;
}
  • 更新数据
- (void)updateStudent:(Student *)stu{
    NSString *sqlite = [NSString stringWithFormat:@"update student set name = '%@',sex = '%@',age = '%ld' where number = %ld ",stu.name,stu.sex,stu.age,stu.number];
    char *error = NULL;
    int result = sqlite3_exec(db, [sqlite UTF8String], NULL, NULL, &error);
    
    if (result == SQLITE_OK) {
        NSLog(@"OK");
        NSLog(@"%@",sqlite);
    }else{
        NSLog(@"Fail : %s",error);
    }
}
  • 在操作完毕后,需要关闭数据库
//关闭数据库
- (void)close{
    NSString *str = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *path = [str stringByAppendingPathComponent:@"my.sqlite"];
    int result = sqlite3_close(db);
    if (result ==SQLITE_OK) {
        NSLog(@"关闭");
    }else{
        NSLog(@"未关闭");
    }
    db =nil;
}

相关文章

  • SQLite 创建数据库

    SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何...

  • 第四篇:sqlite数据库与FMDB

    目录一、sqlite数据库二、FMDB 一、sqlite数据库 sqlite数据库是基于C实现的、移动端开发常用的...

  • Pycharm中连接数据库sqlite

    django 有个数据库 sqlite sqlite是小型关系数据库

  • Python数据分析基础----第二十二天

    数据库 Python内置的sqlite3模块 import sqlite3 创建sqlite3内存数据库 创建带有...

  • Sqlite 使用笔记

    1. 数据库基本操作封装 sqlite 数据操作 语句类型 sqlite 数据库的简单实用- 导入sqlite3数...

  • 我的电脑上装了些什么软件

    开发 Sqlite 工具 DB Browser for SQLite 专门查看sqlite数据库使用,比较方...

  • Android数据库

    一、SQLite 1、SQLite介绍 1.1、简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库...

  • android笔记6

    本章学习目标: 了解SQLite数据库的特点和体系结构 掌握SQLite数据库的建立和操作方法 SQlite介绍 ...

  • sqlite基础

    SQLite 什么是SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在...

  • 四种数据存储方式(下)

    3.sqlite3 打开数据库: sqlite3 *database; int result = sqlite3_...

网友评论

      本文标题:数据库sqlite

      本文链接:https://www.haomeiwen.com/subject/edmcjttx.html