FMDB的简单介绍,和数据库增删改查的使用

#import <Foundation/Foundation.h>

#import "Book.h"

#import "FMDatabase.h"

@interface FMDBBookHandle : NSObject

+(instancetype)sharedFMDB;

//创建增删改查单例

-(void)insertBook:(Book *)book;

-(void)deleteBook:(Book *)book;

-(void)updateBook:(Book *)book;

-(NSMutableArray *)selectAll;

//上文的book是模型类,用来传值。

#import "FMDBBookHandle.h"

#import "FMResultSet.h"

//实现上文我们所写的单例方法

static FMDBBookHandle *fmBook;

static FMDatabase *fmdb;

@implementation FMDBBookHandle

+(instancetype)sharedFMDB

{

if (!fmBook) {

fmBook = [[FMDBBookHandle alloc]init];

[fmBook initFMDB];

}

return fmBook;

}

+(instancetype)allocWithZone:(struct _NSZone *)zone

{

if (!fmBook) {

fmBook = [super allocWithZone:zone];

}

return fmBook;

}

-(id)mutableCopy

{

return self;

}

-(id)copy

{

return self;

}

-(void)initFMDB

{

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

NSString *path = [docPath stringByAppendingPathComponent:@"chenrui.sqlite"];

NSLog(@"%@",path);

fmdb = [FMDatabase databaseWithPath:path];

if ([fmdb open]) {

[fmdb executeUpdate:@"CREATE TABLE book(idd INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, author TEXT, price TEXT)"];

[fmdb close];

}

else

NSLog(@"创建数据表失败");

}

-(NSMutableArray *)selectAll

{

NSMutableArray *arr = [NSMutableArray array];

[fmdb open];

FMResultSet *fmSet = [[FMResultSet alloc]init];

fmSet = [fmdb executeQuery:@"SELECT * FROM book"];

while ([fmSet next]) {

int idd = [fmSet intForColumn:@"idd"];

NSString *name = [fmSet stringForColumn:@"name"];

NSString *author = [fmSet stringForColumn:@"author"];

NSString *price = [fmSet stringForColumn:@"price"];

Book *b = [[Book alloc]init];

b.idd = idd;

b.name = name;

b.author = author;

b.price = price;

NSLog(@"id = %d",idd);

[arr addObject:b];

}

[fmdb close];

return arr;

}

-(void)insertBook:(Book *)book

{

BOOL flag = false;

NSArray *arrBook = [self selectAll];

for (Book *b in arrBook) {

if ([b.name isEqualToString:book.name ] && [b.author isEqualToString:book.author] && [b.price isEqualToString:book.price]) {

flag = true;

}

}

if (flag) {

NSLog(@"数据相同");

}

else

{

[fmdb open];

BOOL addFlag = [fmdb executeUpdate:@"INSERT INTO book VALUES(null,?,?,?)",book.name,book.author,book.price ];

if (addFlag) {

NSLog(@"添加成功");

}

else

{

NSLog(@"添加失败");

}

[fmdb close];

}

}

-(void)deleteBook:(Book *)book

{

[fmdb open];

NSString *sql = [NSString stringWithFormat:@"DELETE FROM book WHERE idd = %d",book.idd];

BOOL deleteFlag = [fmdb executeUpdate:sql];

if (deleteFlag) {

NSLog(@"删除成功");

}

else

NSLog(@"删除失败");

[fmdb close];

}

-(void)updateBook:(Book *)book

{

[fmdb open];

NSString *sql = [NSString stringWithFormat:@"UPDATE book SET name = ‘%@‘,author = ‘%@‘,price = ‘%@‘ WHERE idd = %d",book.name,book.author,book.price,book.idd];

bool updateFlag = [fmdb executeUpdate:sql];

if (updateFlag) {

NSLog(@"修改成功");

}

else

NSLog(@"修改失败");

[fmdb close];

}

@end

时间: 2024-10-06 17:41:42

FMDB的简单介绍,和数据库增删改查的使用的相关文章

Mybatis实现简单的数据库增删改查操作

Mybatis实现简单的数据库增删改查操作 框架:mybatis(3.5.2) 数据库:mysql 工具:idea 1.新建一个maven项目,在pom文件中添加mybatis依赖及MySQL依赖 <!-- mybatis核心依赖 --> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId&g

Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面进行描述.参考前文: Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中 Java+MyE

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件.这个数据库在data/data/<package_name>/databases里面,其中<package_name>为该安卓app的工程包名,这个目录必须root后才能看到.在Windows,单机的应用程序,存储数据,基本放到一个文件里面,正如游戏的存档,基本就是把当前的游戏状态存到一个用户很难找到的文件里面.每次存档读档就是一个从这个存

(转)SQLite数据库增删改查操作

原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).d

Yii2.0高级框架数据库增删改查的一些操作(转)

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

Yii2.0高级框架数据库增删改查的一些操作

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

MVC——数据库增删改查

MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系就是→ 在控制器里调用模板里的方法,然后把得到的数据传到视图里,视图就会把得到的数据添加到自己的页面上,在通过视图里反馈的值传到控制器上.以实现对数据库的操作和控制器页面的显示.(大概是这样) 下面是对数据库增删改查的代码 一.各种数据库操作的方法(增删改查) namespace 数据库增删改查.M

Android中内容提供者ContentProvider实现数据库增删改查

1.我们首先new一个我们自己的类集成ContentProvider,并实现方法如下 package com.wzw.sqllitedemo.providers; import com.wzw.sqllitedemo.db.PersonSQLiteOpenHelper; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues;

Java连接MySQL数据库增删改查通用方法

Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了  数据库--MySQL-->Java篇 接下来我给大家讲讲如何将

go——beego的数据库增删改查

一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也就不怎么存在疑问为什么还要继续安装beego来完成项目运行了,beego其实就是一个快速开发Go应用的http框架,go 语言方面技术大牛,可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架.再次附上beego的官网(http://beego.me/docs/intro/