zoukankan      html  css  js  c++  java
  • iOS:SQL

    iOS虽然也有SQL,不过用得少(至少我目前是这样)。大数据直接丢给后台,小的用Plist足矣。

    再退一步,有FMDB,原生的也用得少了。

    下面是之前学SQL时候的笔记。

    1、创建

    1-1)、打开: 数据库指针、保存地址

    sqlite3_open([path UTF8String], &new_sql)
    

    1-2)、创建: 数据库指针、创建指令、错误指令

    NSString *command = @"CREATE TABLE IF NOT EXISTS UserTable (username TEXT primary key,password TEXT,age TEXT)";
    
    sqlite3_exec(new_sql, [command UTF8String], NULL, NULL, &new_error)
    

    1-3)、关闭: 数据库指针

    sqlite3_close(new_sql);
    

    2、插入

    2-1)、打开: 数据库指针、保存地址

    同上

    2-2)、插入:

    //插入:指令
    NSString *op = @"INSERT INTO UserTable(username,password,age) VALUES (?,?,?)";
    
    //准备: 数据库指针、插入指令、句柄
    sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);
    
    //绑定: 句柄、位置、数据
    sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL);
    
    //下一步: 句柄
    sqlite3_step(new_stmt);
    
    //结束: 句柄
    sqlite3_finalize(new_stmt);
    

    2-3)、关闭: 数据库指针

    同上

    3、删除

    3-1)、打开: 数据库指针、保存地址

    同上

    3-2)、删除:

    //删除指令:
    NSString *op = @"DELETE FROM userTable WHERE userName = ?";
    
    //准备: 数据库指针、删除指令、句柄
    sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);
    
    //绑定: 句柄、位置、数据
    sqlite3_bind_text(new_stmt, 1, [name UTF8String], -1, NULL);
    
    //下一步: 句柄
    sqlite3_step(new_stmt);
    
    //结束: 句柄
    sqlite3_finalize(new_stmt);
    

    3-3)、关闭: 数据库指针

    同上

    4、选择

    4-1)、打开: 数据库指针、保存地址

    同上

    4-2)、选择:

    //选择指令:
    1)NSString *op = @"SELECT username,password,age From UserTable where username = ?";
    2)NSString *op = @"SELECT username,password,age From UserTable";
    
    //准备: 数据库指针、选择指令、句柄
    sqlite3_prepare(new_sql, [op UTF8String], -1, &new_stmt, NULL);
    
    //绑定: 句柄、位置、数据
    sqlite3_bind_text(new_stmt, 1, [selet_name UTF8String], -1, NULL);
    
    //下一步: 句柄
    sqlite3_step(new_stmt);
    
    //遍历:
    while (result == SQLITE_ROW)
    {
        char *c_name = (char *)sqlite3_column_text(new_stmt, 0);
        char *c_password = (char *)sqlite3_column_text(new_stmt, 1);
        char *c_age = (char *)sqlite3_column_text(new_stmt, 2);
    
        NSString *s_name = [NSString stringWithCString:c_name encoding:NSUTF8StringEncoding];
        NSString *s_password = [NSString stringWithCString:c_password encoding:NSUTF8StringEncoding];
        NSString *s_age = [NSString stringWithCString:c_age encoding:NSUTF8StringEncoding];
    
        NSLog(@"%@,%@,%@",s_name,s_password,s_age);
        result = sqlite3_step(new_stmt);
        //NSLog(@"%d",new_stmt);
    }
    
    //结束: 句柄
    sqlite3_finalize(new_stmt);
    

    4-3)、关闭: 数据库指针

    同上

    附录:

    5、插入变体:更新

    @"UPDATE UserTable SET password = ? where username = ?"
    

    6、选择变体:排序

    @"SELECT * FROM userTable ORDER BY age ASC(DESC)"
  • 相关阅读:
    ceph 高可用部署
    ceph安装
    openstack 命令
    ceph
    go test 怎么做测试
    govendor
    wrap 缓存。。。
    python中if __name__ == '__main__': 的解析
    pythton 字典的使用,字典的方法
    python 基础 如何让程序接收参数,最简单用sys.argv[]来获取
  • 原文地址:https://www.cnblogs.com/leonlincq/p/7358485.html
Copyright © 2011-2022 走看看