iOS数据库常用sql语句

1.创建表语句

create table Student (Student 是表名)
IF NOT EXISTS 表不存在 才创建
gender text 表示其类型 字符串

存储类型:
NULL 值是空值
INTEGER 值是整型
REAL 值是浮点数
TEXT 值是文本字符串
BLOB 值是一个二进制类型

number integer primary key not NULL 主键值 如果不操作 自增

create table IF NOT EXISTS lanOuStudent(number integer primary key not NULL, name text not NULL, gender text not NULL, age integer not NULL)

2.插入语句

insert into lanOuStudent 表名
注:单引号 与 顺序对应

insert into lanOuStudent(name ,gender ,age , number) values('%@' ,'%@' , '%ld' , '%ld')

3.删除语句

delete from lanOuStudent 表名
where 根据条件删除
delete from lanOuStudent where age > '%ld'

4.更新语句

update lanOuStudent 表名
where 根据条件更新
set age 更新的字段


update lanOuStudent set age = '%ld' where name = '%@'

5.查询语句

where 根据条件查询 多条件用 and 连接
*表示 查询所有字段

select * from lanOuStudent where name = '%@' and age = '%ld'

select * from lanOuStudent 查询所有

重要函数参数:

sqlite3_exec(sqlite3 *, const char sql, int (callback)(void *, int, char **, char **), void *, char **errmsg)
第1个参数 是前面open函数得到的指针。
第2个参数 是一条sql语句。
第3个参数 是回调,当这条语句执行之后,sqlite3会去调用你提供的这个函数。
第4个参数 是你所提供的指针,你可以传递任何一个指针参数到这里,这个参数最终会传到回调函数里面,如果不需要传递指针给回调函数,可以填NULL。等下我们再看回调函数的写法,以及这个参数的使用。
第5个参数 是错误信息。

sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
int nByte -1 指sql语句长度 可以无限长
sqlite3_stmt 跟随指针 地址
const char **pzTail 截取sql语句未使用部分

绑定查询值
第二个参数 指查询的第几个问号 从1开始

sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);
读取数据
第二个参数 指的是 表中的列数 从0开始

char *name = (char *)sqlite3_column_text(stmt, 1);

SQlite语句用例


- (void)queryWithDBQueue
{
    NSString *orderid = [NSString stringWithFormat:@"orderid-00000000000-%d", 10];
    NSString *userid = [NSString stringWithFormat:@"userid-00000000000-%d", 10];
    NSString *sql = [NSString stringWithFormat:@"select * from %@ where BG_userid = '%@' and BG_orderid = '%@'", bg_tableName, userid, orderid];
    [self.dbQueue inDatabase:^(FMDatabase * _Nonnull db) {
        // 1.查询数据
        FMResultSet *resultSet = [db executeQuery:sql];
        NSLog(@"resultSet = %@", resultSet);
        // 2.遍历结果集
        while ([resultSet next]) {
            NSString *BG_userid =  [resultSet stringForColumn:@"BG_userid"];
            NSString *BG_orderid =  [resultSet stringForColumn:@"BG_orderid"];
            NSDictionary *resultDictionary =  [resultSet resultDictionary];
            NSLog(@"BG_userid = %@  ------  BG_orderid = %@", BG_userid, BG_orderid);
            NSLog(@"resultDictionary = %@", resultDictionary);
        }
        // 查询完后要关闭resultSet,不然会报@"Warning: there is at least one open result set around after performing
        [resultSet close];
    }];
}

- (FMDatabaseQueue *)dbQueue
{
    if (!_dbQueue) {
        _dbQueue = [[FMDatabaseQueue alloc] initWithPath:self.dbPath];
    }
    return _dbQueue;
}

- (NSString *)dbPath {
    if (!_dbPath) {
        NSString *dataBasePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"DataBase/WSFApp_AAA.db"];
        _dbPath = dataBasePath;
    }
    return _dbPath;
}

- (void)configDB
{
    /**
     *  /Users/tong/Library/Developer/CoreSimulator/Devices/27A60AAD-5CF8-443E-9AA1-DDFC7CACE209/data/Containers/Data/Application/BC9DBFE6-9F8B-4AA1-BE53-0BB79AE458F2/Documents/DataBase/WSFApp_AAA.db
     */
    NSString *dataBasePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"DataBase"];
    NSError *error;
    [[NSFileManager defaultManager] createDirectoryAtPath:dataBasePath withIntermediateDirectories:YES attributes:nil error:&error];
    if (error) {
        NSLog(@"createDirectoryAtPath_error = %@", error);
    } else {
        //[[BGDB shareManager] setSqliteName:@"/DataBase/WSFApp"];
        [[BGDB shareManager] setSqliteName:@"/DataBase/WSFApp_AAA"];
        NSLog(@"sqliteName = %@", [BGDB shareManager].sqliteName);
        NSLog(@"dataBasePath = %@", dataBasePath);
    }
}

你可能感兴趣的:(iOS数据库常用sql语句)