zoukankan      html  css  js  c++  java
  • SQLite 的使用

    采用SQLite数据库来存储数据。SQLite作为一中小型数据库  

    第一步:需要添加SQLite相关的库以及头文件:在项目文件的Build Phases下,找到Link Binary Library(ies),添加libsqlite3.0.dylib(libsqlite3.dylib与前者的区别暂时不知,两者应该差不多);在项目文件中头文件或者源文件中添加头文件#import "/usr/include/sqlite3.h"

    第二步:开始使用SQLite:

    NSArray *documentsPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask , YES);
    NSString *databaseFilePath=[[documentsPaths objectAtIndex:0] stringByAppendingPathComponent:@"mydb"];
    //上面两句已经比较熟悉了吧! 
    //打开数据库
    if (sqlite3_open([databaseFilePath UTF8String], &database)==SQLITE_OK) { 
            NSLog(@"sqlite dadabase is opened."); 
    }
    else{ return;}//打开不成功就返回

    在打开了数据库的前提下,如果数据库没有表,那就开始建表了哦!
    char *error; 
    const char *createSql="create table(id integer primary key autoincrement, name text)";
    if (sqlite3_exec(database, createSql, NULL, NULL, &error)==SQLITE_OK) { 
            NSLog(@"create table is ok."); 
    }
    else
    {
           NSLog(@"error: %s",error);
           sqlite3_free(error);//每次使用完毕清空error字符串,提供给下一次使用

    建表完成之后,就开始插入记录:


    const char *insertSql="insert into a person (name) values(‘gg’)"; 
    if (sqlite3_exec(database, insertSql, NULL, NULL, &error)==SQLITE_OK) { 
            NSLog(@"insert operation is ok."); 
    }

    else
    {
           NSLog(@"error: %s",error);
           sqlite3_free(error);//每次使用完毕清空error字符串,提供给下一次使用

    下一步,查询记录:

    const char *selectSql="select id,name from a person"; 
    sqlite3_stmt *statement; 
    if (sqlite3_prepare_v2(database,selectSql, -1, &statement, nil)==SQLITE_OK) { 
            NSLog(@"select operation is ok."); 
    }
    else
    {
           NSLog(@"error: %s",error);
           sqlite3_free(error);

    while(sqlite3_step(statement)==SQLITE_ROW) { 
    int _id=sqlite3_column_int(statement, 0); 
    NSString *name=(char*)sqlite3_column_text(statement, 1); 
    NSLog(@"row>>id %i, name %s",_id,name); 
    }
    sqlite3_finalize(statement);

    最后,关闭数据库:

    sqlite3_close(database); 

    注意:写入数据库,字符串可以采用char方式,而从数据库中取出char类型,当char类型有表示中文字符时,会出现乱码。这是因为数据库默认使用ascII编码方式。所以要想正确从数据库中取出中文,需要用NSString来接收从数据库取出的字符串。

  • 相关阅读:
    正则表达式
    正则表达式的lastIndex属性
    vuejs 在移动端调起键盘并触发‘前往’按钮
    适配手机端之 rem
    prototype和_proto_
    ES6 class的继承-学习笔记
    js-null 、undefined
    ES6 class的基本语法-学习笔记
    chrome插件 - Manifest文件中的 background
    别踩白块
  • 原文地址:https://www.cnblogs.com/penger/p/4311043.html
Copyright © 2011-2022 走看看