zoukankan      html  css  js  c++  java
  • SQLite数据库

    1.创建数据库

    // 声明数据库
    static sqlite3 *db = nil;
    
    #pragma mark 打开数据库
    - (void)openDataBase
    {
    
        if (db != nil) {
            return;
        }
        // 创建数据库
        
        //  1.保存数据库的路径
        NSString *path = [self getDataBasePath];
        NSLog(@"%@",path);
        
        // 2.拼接路径(数据库具体的文件)
        path = [path stringByAppendingString:@"/data.sqlite"];
        
        // 3.根据路径去打开数据库(如果数据库不存在---自动创建数据库)
        int result = sqlite3_open([path UTF8String], &db);
        
        // 4.判断数据库是否打开成功
        if (SQLITE_OK == result) {
            NSLog(@"数据库打开成功");
        }else{
        
            NSLog(@"数据库打开失败");
        }
    }

    2.创建表格

    #pragma mark 创建表格
    - (void)createTable:(NSString *)tableName
    {
    
        // 创建表格 --- SQL语句                                            table不能少---很重要(没有会失败)
        
        NSString *creatTableString = [NSString stringWithFormat:@"CREATE TABLE '%@'('id' INT PRIMARY KEY,'name' TEXT,'sex' TEXT)",tableName];
        
        // 执行SQL语句
        int result = sqlite3_exec(db, [creatTableString UTF8String], NULL, NULL, NULL);
        
        if (result == SQLITE_OK) {
            NSLog(@"创建%@表成功",tableName);
        }else{
        
            NSLog(@"创建%@表失败",tableName);
        }
        
        
    }



    3.插入数据

    #pragma makr 插入数据
    - (void)insetIntoTableWithID:(int)nameID withName:(NSString *)name withSex:(NSString *)sex
    {
    
        // 插入语句
        NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO 'user_hh'('id','name','sex')VALUES('%d', '%@', '%@')",nameID,name,sex];
        // 执行SQL语句
        int result = sqlite3_exec(db, [insertSql UTF8String], NULL, NULL, NULL);
        if (result == SQLITE_OK) {
            NSLog(@"插入成功");
        }else{
        
            NSLog(@"插入失败");
        }
    }

    4.删除数据

    #pragma mark 删除数据
    - (void)deleteDataFromTableWithID:(int)nameID
    {
    
        // 写sql语句
        NSString *deleteSql = [NSString stringWithFormat:@"DELETE FROM 'user_hh' WHERE id = '%d'",nameID];
        int result = sqlite3_exec(db, [deleteSql UTF8String], NULL, NULL, NULL);
        if (result == SQLITE_OK) {
            NSLog(@"删除成功");
        }else{
        
            NSLog(@"删除失败");
        }
    }

    5.更新数据

    #pragma mark 更新数据
    - (void)updateDataFromTableWithID:(int)nameID
    {
    
        NSString *updateSql = [NSString stringWithFormat:@"UPDATE 'user_hh' set sex = '不男不女' where id = %d",nameID];
        
        int resquest = sqlite3_exec(db, [updateSql UTF8String], NULL, NULL, NULL);
        
        if (resquest == SQLITE_OK) {
            NSLog(@"更新成功");
        }else{
        
        
            NSLog(@"更新失败");
        }
    }

    6.查询数据库

    #pragma mark 查询数据库
    - (void)selectDataFromTable
    {
    
        NSString *selectSql = [NSString stringWithFormat:@"SELECT *FROM 'user_hh'"];
       
        // 保存查询到的结果集
        sqlite3_stmt *stmt = nil;
        // 准备查询数据(预存取)
        int result = sqlite3_prepare(db, [selectSql UTF8String], -1, &stmt, NULL);
        if (result == SQLITE_OK) {
            
            // 判断是否是最后一行,有没有必要继续下去
            // 这里用while循环 一行一行执行 ******不用if******
            while(sqlite3_step(stmt) == SQLITE_ROW) {
                // 拿出各列的数据
                
                // 1.拿出id列的数据
                int numberID = sqlite3_column_int(stmt, 0);
                
                // 2.拿出name列的数据
                const unsigned char *nameChar = sqlite3_column_text(stmt, 1);
                NSString *name = [NSString stringWithUTF8String:(const char *)nameChar];
                
                // 3.拿出sex列的数据
                const unsigned char *sexChar = sqlite3_column_text(stmt, 2);
                NSString *sex = [NSString stringWithUTF8String:(const char *)sexChar];
                
                NSLog(@"%d %@ %@",numberID,name,sex);
            }
            
            // 结束查询 --- 重要 ****** 否则无法关闭数据库******
            sqlite3_finalize(stmt);
        }
        
        
        
    }

    7.关闭数据库

    #pragma mark 关闭数据库
    - (void)closeDataBase
    {
    
        // 关闭数据库
        int result = sqlite3_close(db);
        if (result == SQLITE_OK) {
            NSLog(@"关闭数据库成功");
        }else{
        
            NSLog(@"关闭数据库失败");
        }
        
    }
  • 相关阅读:
    GOIP connects with Elastix through “config by line”
    Asterisk 的安全性
    sql2005性能优化(在32位系统上突破2G内存使用量的方法) .
    Asterisk的type类型和身份认证
    Elastix GOIP 网关配合
    Elastix 安装G729 G723语音编码
    Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)
    Proxmox Reset Root Password
    volatile适用场景
    ANT教程经典
  • 原文地址:https://www.cnblogs.com/bachl/p/4673951.html
Copyright © 2011-2022 走看看