zoukankan      html  css  js  c++  java
  • 数据库操作(SQLite)

    SQLite 是一个轻量级的关系数据库。SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,目前应用于Android、iOS、Windows Phone等智能手机。iOS 使用时SQLite,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。

    数据库操作包含打开数据库、创建表,表的增、删、改、查。下面代码给出了数据库操作.

    创建并打开数据库:

    //获取数据库路径  
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
        NSString *documents = [paths objectAtIndex:0];  
        NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];  
          
        //如果数据库存在,则用sqlite3_open直接打开(不要担心,如果数据库不存在sqlite3_open会自动创建)  
        //打开数据库,这里的[path UTF8String]是将NSString转换为C字符串,因为SQLite3是采用可移植的C(而不是  
        //Objective-C)编写的,它不知道什么是NSString.  
        if (sqlite3_open([database_path UTF8String], &db) == SQLITE_OK) {  
            return YES;  
        }else{  
            return NO;  
            NSLog(@"数据库打开失败");  
            sqlite3_close(db);  
        }  

     iOS中没有提供创建数据库的命令,当使用sqlite3_open时,如果数据库文件不存在会自行创建数据库,如果存在会打开数据库。打开数据库后就可以创建表并操作表内容了,iOS中的sqlite3使用sqlite3_exec来创建表、插入表内容、修改表内容、删除表内容等操作,使用sqlite3_prepare_v2来查询表。

    -(void)execSql:(NSString *)sql  
    {      
        if ([self openDB]) {  
            char *err;  
            if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {  
                NSLog(@"数据库操作数据失败!");  
            }else{  
                NSLog(@"%@",sql);  
            }  
            sqlite3_close(db);  
        }      
    }  

      创建表:

    NSString *sqlCreateTable =  [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('%@' INTEGER PRIMARY KEY AUTOINCREMENT, '%@' TEXT, '%@' INTEGER, '%@' TEXT)",TABLENAME,ID,NAME,AGE,ADDRESS];  
        [self execSql:sqlCreateTable];  

     插入数据:

    -(void) insertData{  
        NSString *insertSql1= [NSString stringWithFormat:  
                          @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",  
                          TABLENAME, NAME, AGE, ADDRESS, @"张三", @"13", @"济南"];  
        [self execSql:insertSql1];  
          
        NSString *insertSql2 = [NSString stringWithFormat:  
                          @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",  
                          TABLENAME, NAME, AGE, ADDRESS, @"李四", @"12", @"济南"];  
        [self execSql:insertSql2];  
          
    }  
    // 更新数据

    -(void) updateData{ NSString *updateSql = [NSString stringWithFormat: @"UPDATE '%@' SET '%@' = '%@' WHERE '%@' = '%@'", TABLENAME, AGE, @"15" ,AGE, @"13"]; [self execSql:updateSql]; }

     删除表内容:

    -(void) deleteData{  
        NSString *sdeleteSql = [NSString stringWithFormat:  
                          @"delete from %@ where %@ = '%@'",  
                          TABLENAME, NAME, @"张三"];  
        [self execSql:sdeleteSql];  
    }  

    查询:

    -(void) selectData{  
      
        [self openDB];  
        NSString *sqlQuery = [NSString stringWithFormat:  
                          @"SELECT * FROM %@",TABLENAME];  
        sqlite3_stmt * statement;  
          
        if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {  
              
            //查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值,注意这里的列值  
      
            while (sqlite3_step(statement) == SQLITE_ROW) {  
                char *name = (char*)sqlite3_column_text(statement, 1);  
                NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];  
                  
                int age = sqlite3_column_int(statement, 2);  
                  
                char *address = (char*)sqlite3_column_text(statement, 3);  
                NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];  
                  
                NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);  
            }  
        }else{  
            NSLog(@"select error:%@",sqlQuery);  
      
        }  
        sqlite3_close(db);  
    }  
  • 相关阅读:
    实现h5中radio单击取消与选中
    小程序中的组件化理解
    阿里字体css代码引入方法
    前端布局心得小结
    Python学习资源汇总,转载自他人
    史上最全 原生javascript的知识总结,适合新手及查资料用!
    windows Python 3.4.3 安装图文
    PyInstaller编译python3时使用的详细参数介绍
    PyInstaller 安装方法 及简单的编译exe (python3)
    Windows 安装 GTK+ 图文说明
  • 原文地址:https://www.cnblogs.com/Fc-ios/p/3896127.html
Copyright © 2011-2022 走看看