在移动设备上进行高性能高效率的大量数据存储,我们一般用得时sqlite这款轻巧型的数据库,这里介绍其增删改查基本功能

  在ios开发中我们需要先导入"libsqlite3.dylib"这个动态库,然后在控制器中#import "sqlite3.h"

  在类扩展中定义成员变量:sqlite3 *_db

  然后定义数据库文件在手机沙盒中的存储位置以及数据库名称:

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSString *fileName = [path stringByAppendingPathComponent:@"myData.sqlite"];

  执行打开数据库操作:sqlite3_open([fileName UTF8String], &_db)

  如果数据库是正常打开,我们可以根据需要来创建数据表:

CREATE TABLE IF NOT EXISTS cPerson(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,age INTEGER)

  然后可以对数据表的数据进行增删改查等操作:

  增:INSERT INTO cPerson (id, name, age) VALUES ('2','hehe','20')"

  删:DELETE FROM cPerson WHERE id = 2

  改:UPDATE cPerson set name = 'ashui' where id = 2

  查:SELECT * FROM cPerson

  最后执行关闭数据库操作:sqlite3_close(_db)

  绑定VALUES(?,?)中?的值:sqlite3_bind_text(sqlite3_stmt *, int, const char *,int n, void (*)(void *))

  具体代码实现:

 #import "WYSViewController.h"
#import "sqlite3.h" @interface WYSViewController (){ // 数据库
sqlite3 *_db;
} @end @implementation WYSViewController - (void)viewDidLoad
{
[super viewDidLoad]; NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[];
NSString *fileName = [path stringByAppendingPathComponent:@"myData.sqlite"]; // 打开数据库
if (sqlite3_open([fileName UTF8String], &_db) == SQLITE_OK){ NSLog(@"数据库打开成功"); // 如果不存在,则创建表
NSString *cPerson = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS cPerson(id integer primary key autoincrement,name text,age integer)"];
[self executeWithString:cPerson]; }
} // 执行操作
- (void)executeWithString:(NSString *)string
{
char *error = nil; if (sqlite3_exec(_db, [string UTF8String], NULL, NULL, &error) == SQLITE_OK){ NSLog(@"操作成功");
} } - (IBAction)insertData:(id)sender{ NSString *iP1 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",,@"hehe",];
[self executeWithString:iP1]; NSString *iP2 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",,@"haha",];
[self executeWithString:iP2];
} // 删除数据
- (IBAction)deleteData:(id)sender { NSString *dPerson = [NSString stringWithFormat:@"DELETE FROM cPerson WHERE id = 2"]; [self executeWithString:dPerson]; // 这种删除方式也行
// sqlite3_stmt *statement; // 用于保存编译好的SQL语句
//
// if (sqlite3_prepare_v2(_db, [dPerson UTF8String], -1, &statement, nil) == SQLITE_OK){
//
// while (sqlite3_step(statement) == SQLITE_ROW) {
//
//// if (sqlite3_step(statement) == SQLITE_DONE){
//
//// }
// }
//
// NSLog(@"删除成功");
//
// sqlite3_finalize(statement);
// } // sqlite3_close(_db);
} // 更新数据
- (IBAction)updataData:(id)sender { NSString *uPerson = [NSString stringWithFormat:@"UPDATE cPerson set name = 'shuige' where id = 3"]; [self executeWithString:uPerson]; } // 查询数据
- (IBAction)selectData:(id)sender { NSString *sPerson = @"SELECT * FROM cPerson";
sqlite3_stmt *statement; if (sqlite3_prepare_v2(_db, [sPerson UTF8String], -, &statement, nil) == SQLITE_OK){ while(sqlite3_step(statement) == SQLITE_ROW){ int id = sqlite3_column_int(statement, ); char *name = (char *)sqlite3_column_text(statement, ); NSString *nameStr = [[NSString alloc] initWithUTF8String:name]; int age = sqlite3_column_int(statement, ); NSLog(@"id:%d name:%@ age:%d",id,nameStr,age);
} sqlite3_finalize(statement);
} }
@end

sqlite3基本操作的更多相关文章

  1. C语言SQLite3基本操作Demo

    /************************************************************************** * C语言SQLite3基本操作Demo * 声 ...

  2. ios在SQLite3基本操作

    iOS关于sqlite3操作 iPhone中支持通过sqlite3来訪问iPhone本地的数据库. 详细用法例如以下 1:加入开发包libsqlite3.0.dylib 首先是设置项目文件.在项目中加 ...

  3. Linux 中 sqlite3 基本操作

    https://www.runoob.com/sqlite/sqlite-commands.html 一 .linux 下安装数据库和创建一个数据库 1. Linux 下安装sqlite3 需要两个命 ...

  4. iOS_数据库3_sqlite3基本操作

    终于效果图: Sqlite3函数总结  1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **ppDb // 数据 ...

  5. Python之sqlite3

    Python sqlite3数据库是一款非常小巧的内置模块,它使用一个文件存储整个数据库,操作十分方便,相比其他大型数据库来说,确实有些差距.但是在性能表现上并不逊色,麻雀虽小,五脏俱全,sqlite ...

  6. Sqlite学习笔记(一)&&编译安装

    Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...

  7. sqlite3之基本操作(二)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...

  8. sqlite3之基本操作(一)

    简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经 ...

  9. SQLite3 安装、基本操作

    1. 安装SQLite3 sudo apt-get install sqlite3 2. 安装Sqlite3编译需要的工具包 如果,你需要的话可以安装该工具包.只是为了体验一把,可以不安装.该项是可选 ...

随机推荐

  1. TCP连接的ISN、连接建立超时及TCP的长短连接

    问题现象: 一.TCP连接的ISN         之前我们说过初始建立TCP连接的时候的系列号(ISN)是随机选择的,那么这个系列号为什么不采用一个固定的值呢?主要有两方面的原因 防止同一个连接的不 ...

  2. 性能测试工具LoadRunner26-LR之lr脚本插入DOS命令

    基础命令 1.dir 无参数:查看当前所在目录的文件和文件夹 /s:查看当前目录其所有子目录的文件和文件夹 /a:查看包括隐含文件的所有文件 /ah:只显示隐含文件 /w:以紧凑方式显示文件和文件夹 ...

  3. 小萝卜控机大师录制脚本(手机app自动化)

    手机自动化测试 之前发布过小萝贝控机大师与按键精灵结合实现手机自动化测试的功能,小萝贝控机大师升级了实现了更多手机自动化测试的功能,如下: l 手机功能自动化测试:录制脚本,检查点时点击小萝贝控机大师 ...

  4. DEDE SQL标签可以获取文档静态链接地址

    在DedeCMS的系统里面,我可以通过由使用SQL语句来配合织梦标签进行更多的个性化调用.比如:推荐会员.推荐企业等.但是我们发现文档链接的底层模板地址的是动态的,那么我们要如何来进行转换,让他链接到 ...

  5. Oracle安装后忘记用户名或密码+创建新登陆用户

    新安装的Oracle11g,不料在使用的时候没记住安装时的用户名和密码. 不用担心,打开sqlplus. 按如下步骤,新建一个登陆用户: 第一步:以sys登陆  sys/密码 as sysdba  此 ...

  6. HDU 5424——Rikka with Graph II——————【哈密顿路径】

    Rikka with Graph II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. 在项目引用里添加上对Microsoft Word 11.0 object library的引用

    private void button1_Click(object sender, System.EventArgs e) { //调用打开文件对话框获取要打开的文件WORD文件,RTF文件,文本文件 ...

  8. maven课程 项目管理利器-maven 3-1 maven常用的构建命令

    mvn -v 查看mvn版本 mvn compile  编译 mvn test 测试 mvn package 编译,打包(这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功 ...

  9. JavaScript常用字符串操作方法

    1.concat() concat() 方法用于连接两个或多个字符串,并返回连接后的字符串.stringObject.concat() 与 Array.concat() 很相似. var str1=& ...

  10. Static 用法

    1.Static关键字含意:static译文是静态的,静止的,因此使用 static 修饰符声明属于类型本身而不是属于特定对象(new创建的对象)的静态成员. 2.修饰使用范围 static 修饰符可 ...