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

首先在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. java MD5 32位加密

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 ...

  2. java-并发-同步

    浏览以下内容前,请点击并阅读 声明 线程间的通信主要是通过访问以及对象引用字段,这种形式的通信非常高效,但是会产生两种可能的错误:线程干扰和内存一致性错误,反正这些错误的工具就是同步. 然而,同步可能 ...

  3. 求50-100内的素数(java)

    实现代码: public class sushu { public static void main(String[] args) { for(int i=50 ; i<=100; i++){ ...

  4. Linux内核笔记——内存管理之slab分配器

    内核版本:linux-2.6.11 内存区和内存对象 伙伴系统是linux用于满足对不同大小块内存分配和释放请求的解决方案,它为slab分配器提供页框分配请求的实现. 如果我们需要请求具有连续物理地址 ...

  5. 线段树 - ZYB's Premutation

    ZYB has a premutation P,but he only remeber the reverse log of each prefix of the premutation,now he ...

  6. UDP和TCP的区别

    UDP(User Datagram Protocol 用户数据报协议) TCP(Transmission Control Protocol 传输控制协议) UDP是一种非面向连接的传输协议,它的实现是 ...

  7. MySQL表名和数据库关键字相同解决办法

    今天改他们的代码的时候,遇到了MySQL表名和数据库关键字的问题. 由于表名是关键字,导致增删改查都报错. Hibernate: select leave0_.id as id22_, leave0_ ...

  8. cocospods 最新安装教程

    Terminator 终端原来 安装 cocoa pods  终端命令 :sudo gem install cocoapods  #已经无效系统更新后的 cocoa pods 终端命令 : sudo ...

  9. canvas生成图片并保存到本地文件夹主要代码

    js var url = canvas.toDataURL();//把canvas中的图片变成data:image C# string filepath = ""; string ...

  10. 2016/11/17 周四 <javascript的封装简单示例>

    这是一个简单的javascript代码封装的示例以及封装后的调用方法: var ticker={ n:0, add:function() { this.n++; }, show:function() ...