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基本操 ...
随机推荐
- 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
Introduction 主成分分析(Principal Components Analysis)是一种对特征进行降维的方法.由于观测指标间存在相关性,将导致信息的重叠与低效,我们倾向于用少量的.尽可 ...
- javaWeb高级编程(1)
十月 24, 2016 10:41:43 上午 org.apache.catalina.core.StandardContext setPath警告: A context path must eith ...
- [svg翻译教程]椭圆(ellipse元素)和线(line元素)
line 先看个例子,这是svg中最简单的线 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http:/ ...
- [翻译svg教程]svg中矩形元素 rect
svg 元素<rect> 是一个矩形元素,用这个元素,可以你可以绘制矩形,设置矩形宽高,边框的宽度颜色,矩形的填充颜色,是否用圆角等 rect 示例 <svg xmlns=" ...
- js 继承 对象方法与原型方法
js函数式编程确实比很多强语言使用灵活得多,今天抽了点时间玩下类与对象方法调用优先级别,顺便回顾下继承 暂时把原型引用写成继承 先看看简单的两个继承 var Parent = function(){} ...
- ViewController的生命周期
# ViewController 的生命周期 # ViewController的生命周期中各个方法的流程如下: init loadView :加载view viewDidLoad :view加载完毕 ...
- Mac下搭建hexo
Mac下搭建hexo 并部署到gitcafe 1.安装brewhome ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homeb ...
- AJax登录。。转
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快速 ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- 偶遇STM32 JTAG和SWD口(调试)被禁用无法下载,已经粗暴解决!
处女座,为了板子走线美观,拉线方便,在项目量产前,还更改了原来外设的IO口,埋头苦干一天,移植ok,发现PB3一直不听使唤,好,加班检查代码,检查初始化,时钟,IO对应,然后试PCB板,是否短路,断路 ...