iOS 轻量级的数据库leveldb

轻量级的数据库leveldb https://github.com/google/leveldb

一:在iOS下编译leveldb

终端:

1: git clone https://github.com/google/leveldb.git

2: 进入根目录

cd leveldb-master

3: 编译:

CXXFLAGS=-stdlib=libc++ make PLATFORM=IOS

编译完成之后,在当前目录里会生成 libleveldb.a , 支持全部模拟器与真机;

头文件在 include 目录下

二:引用库

leveldb是c++的;使用的时候需要oc的.m文件修改为.mm文件;

将编译好的库以group的形式导入到xcode工程;

使用oc的方式引用

#import "db.h"

#import "options.h"

#import "write_batch.h"

这时会出现xxx.h找不到的错误;

直接修改include 目录下的头文件;

把出错的头文件部分做如下修改

这种#include "leveldb/xx.h" 改为#include "xx.h"

三:test

#include <iostream>
#include <string>
#include <assert.h>
#include "leveldb/db.h"    

using namespace std;

int main(void)
{       

    leveldb::DB      *db;
    leveldb::Options  options;
    options.create_if_missing = true;    

    // open
    leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db);
    assert(status.ok());    

    string key = "name";
    string value = "chenqi";    

    // write
    status = db->Put(leveldb::WriteOptions(), key, value);
    assert(status.ok());    

    // read
    status = db->Get(leveldb::ReadOptions(), key, &value);
    assert(status.ok());    

    cout<<value<<endl;    

    // delete
    status = db->Delete(leveldb::WriteOptions(), key);
    assert(status.ok());        

    status = db->Get(leveldb::ReadOptions(),key, &value);
    if(!status.ok()) {
        cerr<<key<<"    "<<status.ToString()<<endl;
    } else {
        cout<<key<<"==="<<value<<endl;
    }   

    // close
    delete db;    

    return 0;
}

  

参考:http://www.tanhao.me/pieces/1397.html/

http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html

时间: 2024-11-01 12:16:05

iOS 轻量级的数据库leveldb的相关文章

iOS基础7:数据库

在当今智能手机的天下,我们很多数据都是保存在手机上,如备忘录,通讯录等,镔哥,告诉你,在各种文件格式在搜索与保存的速度都比不上数据库快,毕竟数据库在保存的时候经过特殊格式安排的.而不论是ios或者是android,其内部都是采用SQLite这个嵌入式数据库作为解决方案.因为比起其他商业数据库,它可就明显小得多. SQLite属于轻量级别的数据库,它不需要任何设置,更不需要架设任何服务器.这样使得它特别适合用于内存寸土寸金的嵌入式设备中. sqlite的创建数据库,表,插入查看数据 iOS sql

IOS开发之数据库FMDB

IOS开发之数据库FMDB 1.简介 需求作用:如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目 常用的数据库: (1)Microsoft SQL Server 2000/2008:中小企业使用较多 (2)Oracle:比较复杂, 大企业使用较多 (3)Mysql数据库:网站使用较多 (4)sqlite:本地数据库, 访问数据足够快, 直接访问文件  足够简单, 功能相对其他数据库软件不是特别齐全, 足够用了  足够小, 系统不超过1M, 适合在移动端上使用 2. Me

IOS开发-封装数据库sqlite3之为何选择FMDB

为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识. 为什么不使用core data和SQLite? Core Data是ORM的一种体现,实现了界面化操作.使用Core Data需要用到模型数据的转化,虽然操作简单,不需要直接操作数据库,但是性能没有直接使用SQLite高.但是SQLi

iOS开发 - 网络&amp;数据库功能综述

学习经验尚浅,以前iOS开发一直停留在单机版的开发,但是现在如果一个移动端开发完全抛弃网络功能,它也不会存在很久.网上讲的关于iOS的网络部分都比较专一,这两天经过融合和总结,大致摸索出了一套整体流程,在此和对网络连接不甚明了的同学分享,本文不涉及技术层面,只是概念的串通. 前提注:如果你真的只是开发一个单机版app也或者公司已经将网络数据封装好给你个接口or XML格式等文件用而且也不想知道的话就请华丽丽地忽视我吧. 一.前提概览 首先,要考虑app所在的大环境是个什么级别的环境,我大致将环境

轻量级本地数据库SQLite在WinRT的使用

开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开发,使用非常广泛 2.SQLite是一款跨平台的数据库,支持Windows.Linux.Android.IOS.Windows Phone系统 3.在Windows Phone中的SQLite是一个非托管组件 4.可以在Windows运行时中使用,也可以在C#项目中使用 5.在C#项目中需要通过Wi

iOS 中SQLite数据库操作

在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 demo 具体过程: 1.创建名为 SQLite_Manage 的.h .m 文件,导入头文件 <sqlite3.h> 2.数据库在一个app中只有一个,使用单例模式:(代码如下) 1 + (SQLite_Manager *)sharedManager{ 2 static SQLite_Mana

iOS进阶学习-数据库

一.数据库管理系统 1.SQL语言概述:SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 2.常见的数据库: MySQL:MySQL是一个精巧的SQL数据库管理系统,而且是开源的数据管理系统.MySQL主要目标是快速.健壮和易用.它拥有强大的功能.灵活性.丰富的应用编程接口(API)以及精巧的系统结构. Oracle:Oracle Database,又名Oracle RDBMS,或简称Oracl

iOS数据持久化—数据库SQLite模糊查询

IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03-模糊查询 // // Created by apple on 14-7-27. // Copyright (c) 2014年 wendingding. All rights reserved. // #import <Foundation/Foundation.h> @interface YYPe

iOS开发-Realm数据库

Realm Realm-Object-c,见:https://realm.io/cn/docs/objc/latest/Realm官网:https://realm.io 使用流程 导入头文件#import < Realm/Realm.h >. 创建类,继承于RLMObject. 在类中生成数据模型. 在需要的地方创建实例,使用Realm方法调用. 数据模型 创建简单数据模型 简单地,继承RLMObject创建类,在.h中通过属性定义不同的内容. RLMResults <0x7fe5e3d