iOS 数据库的增删改查(OC版)
自己写了几个方法来实现数据的增删改查功能:
首先在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版)的更多相关文章
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- iOS CoreData (一) 增删改查
代码地址如下:http://www.demodashi.com/demo/11041.html Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系映 ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- ThinkPHP实现对数据库的增删改查
好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...
- Android学习---数据库的增删改查(sqlite CRUD)
上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...
- Android 系统API实现数据库的增删改查和SQLite3工具的使用
在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...
- Android SQL语句实现数据库的增删改查
本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 【转载】通过JDBC对MySQL数据库的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
随机推荐
- Hello, cnblogs !
来博客园的第一天. 大学毕业三年多了,感觉自己碌碌无为,不知道自己究竟想做什么,就这样浑浑噩噩过了三年多. 记得大三那年,为了准备大四的毕业设计,自学了好几个月的Java EE.Java基础.Java ...
- Python 基础语法学习笔记
以下运行结果均通过Python3.5版本实测! 1.列表转换为字典 a = ['a', 'b'] b = [1, 2] c = ['c','d'] print (dict([a,b,c])) 输出结果 ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
- echo.js 延迟加载图片控件
echo.js的github地址:https://github.com/toddmotto/echo echo是一个独立的JavaScript.轻量级的.延迟图片加载插件,echo压缩后体积不到1 ...
- AMD&CommonJS
最近在学习nodejs的KOA框架,在查资料的时候遇见了点问题,顺着信息一步一步找下去,让我了解了一下一直以来不是很明白的什么时候用AMD规范,什么时候用CommonJS规范问题. CommonJS一 ...
- OpenCV 3.1 Set Camera Resolution 设置相机的分辨率
在OpenCV中,有强大的处理相机事件的api,但是貌似没有直接获取相机的最大分辨率的函数,通过属性CV_CAP_PROP_FRAME_HEIGHT和CV_CAP_PROP_FRAME_WIDTH直接 ...
- android之Handler机制
简单例子开头: 网络http请求网站源码数据并显示 注意点:访问网络需要加Internet权限: android.permission.INTERNET 简单的步骤: 使用UrlConnection请 ...
- jQuery代码节选(事件)
事件 1.ready()$(document).ready(function() { //代码});简写:$(function( { //代码});该事件是会在页面加载完后执行,相当于onloca() ...
- TreeView 使用方法:(在View.Details模式下)
1.建立TreeView的標題 2.建立TreeView的Item 3.在TreeView的Item中的建立SubItem 如果將各部 ...
- MySQL 数据库事务与复制
好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...