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

首先在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. CentOS 搭建 nginx + tomcat

    安装nginx yum install nginx 修改 nginx.conf, (/etc/nginx/nginx.conf), 网上有人做人所有配置项目的详解. #nu For more info ...

  2. LintCode 78:Longest Common Prefix

      public class Solution { /** * @param strs: A list of strings * @return: The longest common prefix ...

  3. Errors occurred during the build. Errors running builder 'JavaScript Validator' on project

    1.问题:Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 2.解决 ...

  4. centos中docker mongodb 配置

    安装docker,对于Centos7,如下: $ sudo yum update$ sudo yum -y install docker$ sudo systemctl start docker 首先 ...

  5. Linux下uniq命令的详解

           -c 在输出行前面加上每行在输入文件中出现的次数.  -d 仅显示重复行.       -u 仅显示不重复的行. 示例 1.去重,有多行一样的只显示一行cat 4.txt |sort - ...

  6. 文档ID:某某 模板文件不存在,无法解析文档!

    如果是生成栏目列表时出现这样的问题]:   1.可以修改include/arc.listview.class.php这个文件. 2.复制代码     echo "模板文件不存在,无法解析文档 ...

  7. 一个flex buider 3 在eclipse下不能编译的问题解决

    今天处理一个遗留的项目:项目使用了flex作为界面,装好flex Builder 3 并添加插件到eclipse,eclipse使用3.7版本. 导入项目,编译,发现编译时候出现 Errors run ...

  8. JS图片上传预览

    HTML部分: <img id="avatar" class="editable img-responsive" alt="头像" s ...

  9. poj1200-Crazy Search(hash入门经典)

    Hash:一般是一个整数.就是说通过某种算法,可以把一个字符串"压缩" 成一个整数.一,题意: 给出两个数n,nc,并给出一个由nc种字符组成的字符串.求这个字符串中长度为n的不同 ...

  10. HTML和CSS经典布局3

    如下图: 需求: 1. 如图 2. 可以从body标签开始. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xht ...