自己写了几个方法来实现数据的增删改查功能:

首先在TARGETS---》》Build phases里面添加数据库所关联的库文件libsqlite3.tbd

添加完以后,在控制器上添加

#import <sqlite3.h> 且增加属性

{

sqlite3 *db;

}

在.m文件中实现增删改查的方法即可

#import "ViewController.h"

#define DBNAME    @"personinfo.sqlite"

#define NAME      @"name"

#define AGE       @"age"

#define ADDRESS   @"address"

#define TABLENAME @"PERSONINFO"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[self OpenDataBase];

[self createTable];

[self InsertData];

[self SelectData];

[self deleteData];

[self updateData];

}

#pragma mark-----------打开数据库

-(void)OpenDataBase

{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documents = [paths objectAtIndex:0];

NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];

if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {

sqlite3_close(db);

NSLog(@"数据库打开失败");

}

}

#pragma mark----------创建数据表PERSONINFO的语句

-(void)createTable

{

NSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)";

[self execSql:sqlCreateTable];

}

#pragma mark------------创建一个独立的执行sql语句的方法

-(void)execSql:(NSString *)sql

{

char *err;

if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {

sqlite3_close(db);

NSLog(@"数据库操作数据失败!");

}

}

#pragma mark------------增加数据

-(void)InsertData

{

NSString *sql1 = [NSString stringWithFormat:

@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",

TABLENAME, NAME, AGE, ADDRESS, @"张三", @"18",@"北京"];

NSString *sql2 = [NSString stringWithFormat:

@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",

TABLENAME, NAME, AGE, ADDRESS, @"老四", @"19",@"深圳"];

[self execSql:sql1];

[self execSql:sql2];

}

#pragma mark----------------删除数据

-(void)deleteData

{

sqlite3_stmt *statement;

NSString *sqlStr = [NSString stringWithFormat:@"DELETE FROM PERSONINFO WHERE age = %d", 19];

//        NSString *sqlStr = [NSString stringWithFormat:@"DELETE FROM PERSONINFO"];

int result = sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &statement, NULL);

if (result == SQLITE_OK) {

if (sqlite3_step(statement) == SQLITE_ROW) {//觉的应加一个判断, 若有这一行则删除

if (sqlite3_step(statement) == SQLITE_DONE) {

sqlite3_finalize(statement);

sqlite3_close(db);

}

}

}

sqlite3_finalize(statement);

sqlite3_close(db);

NSLog(@"-------删除后---------");

[self SelectData];

}

#pragma mark----------修改数据

-(void)updateData

{

sqlite3_stmt *statement;

NSString *sqlStr = [NSString stringWithFormat:@"update PERSONINFO set name = '%@' where age = %d", @"王五", 18];

int result = sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &statement, NULL);

if (result == SQLITE_OK) {

if (sqlite3_step(statement) == SQLITE_ROW) {//觉的应加一个判断, 若有这一行则修改

if (sqlite3_step(statement) == SQLITE_DONE) {

sqlite3_finalize(statement);

sqlite3_close(db);

}

}

}

sqlite3_finalize(statement);

sqlite3_close(db);

NSLog(@"------修改后----------");

[self SelectData];

}

#pragma mark-----------------查询数据

-(void)SelectData

{

NSString *sqlQuery = @"SELECT * FROM PERSONINFO";

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);

}

}

sqlite3_close(db);

}

 
输出结果:

2016-12-10 08:55:54.130 SQLDemo[7313:144445] name:张三  age:18  address:北京

2016-12-10 08:55:54.130 SQLDemo[7313:144445] name:老四  age:19  address:深圳

2016-12-10 08:55:54.131 SQLDemo[7313:144445] -------删除后---------

2016-12-10 08:55:54.132 SQLDemo[7313:144445] name:张三  age:18  address:北京

2016-12-10 08:55:54.133 SQLDemo[7313:144445] ------修改后----------

2016-12-10 08:55:54.133 SQLDemo[7313:144445] name:王五  age:18  address:北京

iOS 数据库的增删改查(OC版)的更多相关文章

  1. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

  2. iOS CoreData (一) 增删改查

    代码地址如下:http://www.demodashi.com/demo/11041.html Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系映 ...

  3. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  4. ThinkPHP实现对数据库的增删改查

    好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...

  5. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  6. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  7. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  8. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  9. 【转载】通过JDBC对MySQL数据库的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

随机推荐

  1. Xcode 8 Simulator Stop Logging too much info

    按照以下内容设置即可:

  2. dev winform导出功能

    SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileDialog ...

  3. Python yield函数理解

    Python中的yield函数的作用就相当于一个挂起,是不被写入内存的,相当于一个挂起的状态,用的时候迭代,不用的时候就是一个挂起状态,挂起状态会以生成器的状态表现

  4. webform 光棒效果,删除操作弹出确定取消窗口

    鼠标移入onmouseover和鼠标移出onmouseout,代码里没大写我这也就不大写了.那首先,我们得获取Class为tr_item里的所有东西,也就是项标签里的数据.然后呢,我们定义一个oldC ...

  5. Spotlight监控Oracle数据库的链接创建

    最近在做性能测试时,由于要挂载空间数据,开发人员直接将所有业务表都挂到了Oracle数据库中.最近做了几次测试发现响应时间和吞吐量都不是很理想,进行一番分析后怀疑可能在Oracle中出现问题,因此再网 ...

  6. iOS 琐碎点------切某个或某几个角的圆角

    不说废话----------> 1.如果是切四个角的圆角,代码示例: self.picImage.layer.cornerRadius = 8; self.picImage.layer.mask ...

  7. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  8. <web Font的使用>

    使用font-face将字体引入web中 先将字体文件复制到项目的font文件夹中,CSS样式如下: @font-face { font-family: 'iconfont'; /*字体名称*/ sr ...

  9. C# WinForm 中英文实现, 国际化实现的简单方法

    来源:http://www.jb51.net/article/45675.htm,今天看到了借鉴过了,保存一下,下次开发直接用嘻嘻 软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来 ...

  10. datatables服务器端分页要点

    背景:当要查询大量数据的时候,有datatables自身的分页,明显查询比较慢,这是要使用服务器端分页 参数:"bServerSide": true, "fnServer ...