IOS成长之路-数据库的数据添加和查询

/*= = = - - - = = =
     sqlite3 数据库里添加数据
     = = = - - - = = = */
    
    //1.定义一个sqlite3的指针
    sqlite3 *db;
    //2.用来接收读写数据库操作是否成功的返回值
    int dbrc;
    //3.转换数据库路径为UTF8的c风格字符串
    const char* dbFilePathUTF8 = [dbFilePath UTF8String];
    //4.打开数据库
    dbrc = sqlite3_open(dbFilePathUTF8, &db);
    //判断是否成功打开
    if (dbrc == SQLITE_OK) {
        NSLog(@"成功打开数据库");
    }
    //5.定义执行sql语句的指针
    sqlite3_stmt *dbps;
    //6.定义sql语句
    NSString *insertStatementNS = [NSString stringWithFormat:
                                   @"insert into \"shopping\"\
								   (item, price, groupid, dateadd)\
								   values (\"%@\", %@, %d, DATETIME('NOW'))",
								   @"lll",
								   @"350",
                                   2];
    //7.将定义的NSString的sql语句,转换成UTF8的c风格的字符串
    const char *insertStatement = [insertStatementNS UTF8String];
    
    
    //8.sql语句的预执行。(判断sql语句是否符合语法)    
    dbrc = sqlite3_prepare_v2 
    (db, insertStatement, -1, &dbps, NULL);
    
    //9.执行sql语句
    dbrc = sqlite3_step (dbps);
    
    NSLog(@"dbrc = %d",dbrc);
    
    
    
    
    /*= = = - - - = = =
     数据库里读取数据
     = = = - - - = = =*/
    
    //1.定义一个查询语句    
    NSString *queryStatementNS =
	@"select key,item,price,groupid,dateadd from shopping";
    
    //2.将定义的NSString的查询语句转换成UTF8的c字符串    
    const char *queryStatement = [queryStatementNS UTF8String];
    
    //3.sql语句的预处理    
    dbrc = sqlite3_prepare_v2 (db, queryStatement, -1, &dbps, NULL);
	NSLog (@"prepared statement=%d",dbrc);
    
    //4.获取值,要用相匹配的方法去获取相应类型的值,并要转换类型
    while ((dbrc = sqlite3_step (dbps)) == SQLITE_ROW)
    {
       
        //获取主健的值 int型的 用 sqlite3_column_int
        int primaryKeyValueI = sqlite3_column_int(dbps, 0);
        //转换成 NSNumber 类型的
		NSNumber *primaryKeyValue = [[NSNumber alloc]
									 initWithInt: primaryKeyValueI];
        
        NSLog(@"primaryKeyValue = %@",primaryKeyValue);
		
        //获取item的值 字符串用 sqlite3_column_text  
		NSString *itemValue = [[NSString alloc]
							   initWithUTF8String: (char*) sqlite3_column_text (dbps, 1)];
        
        NSLog(@"itemValue = %@",itemValue);
        
        //获取price的值  double类型用 sqlite3_column_double
		double priceValueD = sqlite3_column_double (dbps, 2);
        
        NSLog(@"priceValueD = %lf",priceValueD);
        //转换类型
		NSNumber *priceValue = [[NSNumber alloc]
								initWithDouble: priceValueD];
        
        NSLog(@"priceValue =  %@",priceValue);
        
        //获取guoupid的值
		int groupValueI = sqlite3_column_int(dbps, 3);
        
        NSLog(@"groupValueI =  %d",groupValueI);
        
		NSNumber *groupValue = [[NSNumber alloc]
								initWithInt: groupValueI];
        
        NSLog(@"groupValue =  %@",groupValue);
        
        //获取dateadd的值
		NSString *dateValueS = [[NSString alloc] 
								initWithUTF8String:(char*)sqlite3_column_text (dbps, 4)];
        
        NSLog(@"dateValueS =  %@",dateValueS);
                
    }    
    
    //10.释放资源
    sqlite3_finalize (dbps);
    
    //11.关闭数据库    
    sqlite3_close(db);

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值