IOS 数据库FMDB(四)- (增、删、改、查)

时间:2022-12-11 21:18:52

参考:http://wenku.baidu.com/link?url=TK90OOhfVLK_2N5ZalNS5-hB_a5_Bxb7WLCx5ryzfOxHkCw8mW7tMAe63s-lpP0gzh7sytZ8cYuWabYbjMLPlxkm9cbZiphxE1sVDHbgMBa

依赖库: libsqlte3.0


[objc] view plain copy
  1. //  
  2. //  ViewController.m  
  3. //  FMDBDemo  
  4. // FMDB有三个主要的类  
  5. // FMDatabase一个FMDatabase对象就代表一个单独的SQLite数据库 用来执行SQL语句  
  6. // FMResultSet使用FMDatabase执行查询后的结果集  
  7. // FMDatabaseQueue用于在多线程中执行多个查询或更新,它是线程安全的  
  8. //  Created by Jason on 15-2-16.  
  9. //  Copyright (c) 2015年 eshore. All rights reserved.  
  10. //  
  11.   
  12. static const char encodingChar[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  
  13.   
  14.   
  15. #import "ViewController.h"  
  16.   
  17. @interface ViewController (){  
  18.   
  19.     NSString *__dataStr;  
  20.     NSData   *__imageData;  
  21.     NSArray  *__dataAry;  
  22.     NSString *__imageStr;  
  23.   
  24. }  
  25.   
  26. @end  
  27.   
  28. @implementation ViewController  
  29.   
  30. - (void)viewDidLoad  
  31. {  
  32.     [super viewDidLoad];  
  33.       
  34.       
  35.     __dataStr = @"字符串";  
  36.     __dataAry = @[@"1",@"2"];  
  37.     __imageData  = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://d.hiphotos.baidu.com/zhidao/pic/item/962bd40735fae6cd0009f9410eb30f2442a70f54.jpg"]];  
  38.     NSLog(@"===%@",__imageData);  
  39.       
  40.     //第一种操作  
  41.     [self firDbUse];  
  42.       
  43.     //第二种操作  
  44.     [self serMyDbUse];  
  45. }  
  46.   
  47.   
  48.   
  49.   
  50. /** 
  51.  * 第一种获取队列读取数据库方法 多线程 可以获取id 
  52.  * 创表和插入在队列里:FMDatabaseQueue 
  53.  * 
  54.  */  
  55. -(void)firDbUse  
  56. {  
  57.     //Documents 路径  
  58.     NSString *documenPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
  59.     //db路径  
  60.     NSString *dbPath = [documenPath stringByAppendingString:@"mydbFile.db"];  
  61.       
  62.       
  63.     //获取数据库实例  
  64.     FMDatabaseQueue *dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath];  
  65. //    [_db executeUpdate:@"create table if not exists USER(id integer primary key autoincrement,name,score,image)"];  
  66.     //1.创建表 CREATE TABLE  
  67.     [dbQueue inDatabase:^(FMDatabase *db) {  
  68.         BOOL result=[db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);"];  
  69.         if (result) {  
  70.             NSLog(@"创表成功");  
  71.         }else  
  72.         {  
  73.             NSLog(@"创表失败");  
  74.         }  
  75.     }];  
  76.       
  77.       
  78.     //2.插入数据 INSERT INTO  
  79.     [dbQueue inDatabase:^(FMDatabase *db) {  
  80.         [db executeUpdate:@"INSERT INTO t_person (name, age) VALUES (?, ?);",@"wendingding"@22];  
  81.         [db commit];  
  82.           
  83.     }];  
  84.       
  85.     //查询数据  
  86.     [dbQueue inDatabase:^(FMDatabase *db) {  
  87.         // 3.执行查询语句  
  88.         FMResultSet *resultSet = [db executeQuery:@"SELECT * FROM t_person"];  
  89.           
  90.         // 4.遍历结果  
  91.         while ([resultSet next]) {  
  92.             int ID = [resultSet intForColumn:@"id"];  
  93.             NSString *name = [resultSet stringForColumn:@"name"];  
  94.             int age = [resultSet intForColumn:@"age"];  
  95.             NSLog(@"第一种:%d %@ %d", ID, name, age);  
  96.         }  
  97.     }];  
  98.       
  99.     [dbQueue close];  
  100.       
  101. }  
  102.   
  103.   
  104.   
  105. /** 
  106.  * 第二种获取队列读取数据库方法 
  107.  * 
  108.  */  
  109. -(void)serMyDbUse  
  110. {  
  111.     //Documents 路径  
  112.     NSString *documenPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
  113.       
  114.     //db路径  
  115.     NSString *dbPath = [documenPath stringByAppendingString:@"serDBFile.db"];  
  116.       
  117.     //获取数据库实例  
  118.     FMDatabase *db = [FMDatabase databaseWithPath:dbPath];  
  119.       
  120.     //1.创建表 CREATE TABLE  
  121.     [db open];  
  122. //    [db executeUpdate:@"CREATE TABLE User1 (Name text,Age text)"];  
  123.     [db executeUpdate:@"CREATE TABLE MyDBb1 (Name text,Age)"];  
  124.       
  125.     [db executeUpdate:@"create table if not exists User1(id integer primary key autoincrement,name,age,image)"];  
  126.       
  127.     //2.插入数据 INSERT INTO  
  128.     [db executeUpdate:@"INSERT INTO User1 (name, age) VALUES (?, ?);",@"字符111", __dataStr];  
  129.     [db executeUpdate:@"INSERT INTO User1 (name, age) VALUES (?, ?);",@"字符222"@"字符串2222"];  
  130.   
  131.       
  132.     [db executeUpdate:@"INSERT INTO MyDBb1 (name, age) VALUES (?, ?);",@"图片", __imageData];  
  133.   
  134.       
  135.     //3.替换更新数据 将“Jason”更改为“李四”  
  136.     [db executeUpdate:@"UPDATE MyDBb SET Name = ? WHERE Name = ? ",@"李四",@"Jason"];  
  137.       
  138.       
  139.     //4.删除数据  
  140. //    [db executeUpdate:@"DELETE FROM User WHERE Name = ?",@"张三"];  
  141.       
  142.     //5.查询数据  
  143.     //执行查询语句  
  144.     FMResultSet *resultSet = [db executeQuery:@"SELECT * FROM MyDBb1"];  
  145.       
  146.     //遍历结果  
  147.     while ([resultSet next]) {  
  148.         int ID = [resultSet intForColumn:@"id"];  
  149.         NSString *name = [resultSet stringForColumn:@"name"];  
  150.         NSData *age = [resultSet dataForColumn:@"age"];  
  151.         NSLog(@"第二种1:%d %@ %@", ID, name, age);  
  152.           
  153.         UIImageView *imageV = [[UIImageView alloc]initWithFrame:CGRectMake(100100150150)];  
  154.         imageV.image = [UIImage imageWithData:age];  
  155.           
  156.         imageV.backgroundColor = [UIColor grayColor];  
  157.           
  158.         [self.view addSubview:imageV];  
  159.   
  160.     }  
  161.       
  162.     FMResultSet *resultSet1 = [db executeQuery:@"SELECT * FROM User1"];  
  163.       
  164.     //遍历结果  
  165.     while ([resultSet1 next]) {  
  166.         int ID = [resultSet1 intForColumn:@"id"];  
  167.         NSString *name = [resultSet1 stringForColumn:@"name"];  
  168.         NSString *age = [resultSet1 stringForColumn:@"age"];  
  169.         NSLog(@"第二种2:%d %@ %@", ID, name, age);  
  170.           
  171.           
  172.     }  
  173.   
  174.       
  175. }  
  176.   
  177.   
  178. @end