zoukankan      html  css  js  c++  java
  • ios sqlite3的简单使用

    第一:创建表格

    //创建表格
    -(void)creatTab{
        NSString*creatSQL=@"CREATE TABLE IF NOT EXISTS PERSIONFO(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,AGE TEXT, SEX TEXT,WEIGHT INTEGER,ADDRESS TEXT)";
        char *ERROR;
        if (sqlite3_exec(database,[creatSQL UTF8String], NULL, NULL, &ERROR)!=SQLITE_OK) {
            sqlite3_close(database);
            NSAssert(0, @"creat table faild!");
            NSLog(@"创建表格失败");
        }
    }

    解释:CREATE TABLE IF NOT EXISTS PERSIONFO    如果没有名称为:PERSIONFO的表,建个表PERSIONFO

         ID INTEGER   列名:ID 类型:long int  PRIMARY KEY 名为主键   AUTOINCREMENT 自动加一,并产生sqlite_sequence

      sqlite3_exec(database,[creatSQL UTF8String], NULL, NULL, &ERROR) 参数1.sqlite3类 参数2.sql语句 参数3.回调函数 参数4.回调函数的第一个参数 参数5.错误

    数据类型:

    •   NULL - 空值
    •   INTERGER - 有符号整数类型
    •   REAL - 浮点数类型
    •   TEXT - 字符串(其编码取决于DB的编码)
    •     BLOB - 二进制表示

    第二:打开数据库

    -(void)creatSqlite{
        if(sqlite3_open([[self dataFilePath] UTF8String],&database)!=SQLITE_OK){
            sqlite3_close(database);
            NSAssert(0, @"open database faid");
            NSLog(@"数据库创建失败");
        };
    }

    解释:sqlite3_open([[self dataFilePath] UTF8String],&database) 打开数据库:参数1.地址 urf8类型   参数2.数据库类的地址

    第三:插入数据

    -(void)insertData{
        NSString*sql1=[NSString stringWithFormat:@"INSERT INTO '%@' ('%@','%@' ,'%@') VALUES ('%@','%@','%@')",@"PERSIONFO",@"NAME",@"AGE",@"SEX",@"张三",@"23",@"西城区"];
        char *err;
        if (sqlite3_exec(database, [sql1 UTF8String], NULL, NULL, &err)!=SQLITE_OK) {
            sqlite3_close(database);
            NSLog(@"数据库操作失败!");
            NSLog(@"%s",err);
        }
    }

    解释:INSERT INTO tablename  向tablename表内的(列名称)VALUES 插入(相应的数据)

    第四:查询

    -(void)searchSqlite{
        NSString*sqlQuery=@"SELECT * FROM PERSONINFO";
        sqlite3_stmt *statement;
        if (sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &statement, NULL)==SQLITE_OK) {
            while (sqlite3_step(statement)==SQLITE_OK) {
    //            char *name=(char*)sqlite3_column_text(statement, 1);
                NSString*string=[NSString stringWithUTF8String:sqlite3_column_text(statement, 1)];
                NSLog(@"%@",string);;
            }
        }
    }

    解释:SELECT * FROM PERSONINFO 从PERSONINFO中取出所有数据

       sqlite3_prepare_v2(database, [sqlQuery UTF8String], -1, &statement, NULL)  参数1.数据库类 参数2.sql语句  参数3.字节的最大长度-1无限制 参数4.输出语句句柄 参数5.输出未使用部分指针    语句返回每行符合过滤的数据

       sqlite3_step(statement)  每步获取一行数据

    最后:关闭数据库

    -(void)closeSqlite{
        sqlite3_close(database);
    }
  • 相关阅读:
    内蒙古草原之行
    【iOS开发笔记25/50】:正则表达式
    读书笔记:《写给大家看的设计书》
    【iOS开发笔记22/50】:恼人的a valid provisioning profile for this executable was not found错误
    【搞定GTD】打造高效的OmniFocus系统
    【iOS开发笔记24/50】调整UIImage的大小
    【iOS开发笔记26/50】我自己写的苹果应用程序XQViewer终于上架了,解决了一系列的问题,终于挺过来了
    桥牌笔记:双挤
    养成一个习惯需要几年,而毁掉一下习惯只需要一天
    使用SuperMemo背单词2000天,抓图纪念一下!
  • 原文地址:https://www.cnblogs.com/chaochaobuhuifei55/p/5435029.html
Copyright © 2011-2022 走看看