• IOS-sqlite3数据库: create table数据库表及对数据库表的增删改查(create/insert/delete)


    1.步骤是:

    先加入sqlite开发库libsqlite3.dylib,

    新建或打开数据库,

    创建数据表,

    插入数据,

    查询数据并打印

    2、sqlite 的方法

    sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似

    sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句

    sqlite3_open(),    打开数据库,没有数据库时创建。
    sqlite3_exec(),    执行非查询的sql语句
    Sqlite3_step(),    在调用sqlite3_prepare后,使用这个函数在记录集中移动。
    Sqlite3_close(),   关闭数据库文件
    还有一系列的函数,用于从记录集字段中获取数据,如
    sqlite3_column_text(),      取text类型的数据。
    sqlite3_column_blob(),取blob类型的数据
    sqlite3_column_int(),       取int类型的数据

    3.数据库表的操作:create及update/insert/delete/select

     

     //创建数据库表(Create Table)

    + (BOOL)createTable {

      //判断数据库是否打开

                if ([shareDataBase open]) {

                        //如果表 inner_ac_info不存在,就创建,包含字段列名_id(数据类型为integer,主键,自动递增),ac_name(数据类型为varchar),iu_no(数据类型为varchar),ou_no(数据类型为varchar), gw_ip(数据类型为varchar).

                        NSString *sql = @"CREATE TABLE IF NOT EXISTS inner_ac_info (_id  integer primary key autoincrement, ac_name varchar, iu_no  varchar,  ou_no  varchar, gw_ip  varchar)";

                        [shareDataBase executeUpdate:sql];

                  

                        NSString *sql1 = @"CREATE TABLE IF NOT EXISTS ac_mode_info (_id  integer primary key autoincrement, ac_mode_name varchar, on_off  integer,  speed integer, work_mode  integer, temp  integer)";

                        [shareDataBase executeUpdate:sql1];

     

                    

                        NSString *sql2 = @"CREATE TABLE IF NOT EXISTS ac_mode_inner_ac (_id  integer primary key autoincrement, ac_mode_id long, ac_id  long)";

                

                        [shareDataBase executeUpdate:sql2];       

    //                [shareDataBase close];

         }

     

    SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增.

    关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。

    /**

     

     

     

     //查询数据库表

    + (NSArray *)getAcList{

            NSMutableArray *acarray = [[NSMutableArray alloc] init];

            [self init];

            if ([shareDataBase open]) {

                //查询数据库表下面一句

                FMResultSet *s = [shareDataBase executeQuery:[NSString stringWithFormat:@"SELECT * FROM inner_ac_info"]];

              //相当于 NSString *string = [NSString stringWithFormat:@"SELECT * FROM inner_ac_info"

             //+        FMResultSet *s = [shareDataBase executeQuery:string];

               while ([s next]) {

                    Airconditioner *ac = [[Airconditioner alloc] init];

                    ac.acId = [NSNumber numberWithInt:[s intForColumn:@"_id"]];

                    ac.rmname = [s stringForColumn:@"ac_name"];

                    ac.aciuNo = [s stringForColumn:@"iu_no"];

                    ac.acouNo = [s stringForColumn:@"ou_no"];

                    ac.gwIp   = [s stringForColumn:@"gw_ip"];

                   [acarray addObject:ac];

                }

               //关闭数据库

                [shareDataBase close];

            }

            return acarray;

    }

     

    //更新数据库表的修改(update)

    + (void)updateAc: (Airconditioner*) ac{

        

        [self init];

        NSLog(@"AcId =========%@",ac.acId);

        if ([shareDataBase open]) {

           //数据库表执行更新操作:修改id对应的nkname

            [shareDataBase executeUpdate:

             @"UPDATE  inner_ac_info  set ac_name = ?  where _id = ?",ac.nkname, ac.acId];

            [shareDataBase close];

        }

    }

     

    //删除数据库表

    //删除部分

    + (void)deleteAc:(NSString*)iuNo with:(NSString*) ouNo{

        [self init];

        if ([shareDataBase open]) {

            [shareDataBase executeUpdate:

             @"delete from inner_ac_info where iu_no = ? and ou_no = ?", iuNo, ouNo];

           [shareDataBase close];

        }

    }

    //删除全部

    + (void)deleteAllAc{

        [self init];

        if ([shareDataBase open]) {

            [shareDataBase executeUpdate:

             @"delete from  inner_ac_info"];

            [shareDataBase close];

        }

    }

     

     

     

     

     

     

  • 相关阅读:
    80端口被系统占用
    一些CSS技巧
    js 字符串日期 转成 Date
    mysql: java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x90</...'
    tomcat升级问题
    [转]一个商业计划书模板
    [前端]利用a标签获取url里所需的内容
    回归研发一线
    在程序中打开浏览器(方法1)
    在活动之间切换(显式Intent)
  • 原文地址:https://www.cnblogs.com/yuyu-2012/p/4813466.html
Copyright © 2020-2023  润新知