1.简介

简单封装sqlite数据库操作类 BaseDB 用于完成对sqlite的增删改查,使用前先导入libsqlite3.0.dylib库

2.BaseDB.h

//
//  BaseDB.h
//  SqliteDemo
//
//  Created by 赵超 on 14-8-26.
//  Copyright (c) 2014年 赵超. All rights reserved.
//#import <Foundation/Foundation.h>
#import "sqlite3.h"@interface BaseDB : NSObject/***  创建一个表*  sql:执行的SQL语句*  dataName:数据库名称*/-(void) createTable:(NSString*)sql dataBaseName:(NSString*) dataName;
/***  执行SQL语句,主要完成增加、修改、删除*  sql:执行的SQL语句*  params:SQL语句中的参数*  dataName:数据库名称*/
-(BOOL) execSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName;
/***  选择数据*  sql:查询的SQL语句*  params:查询SQL语句中的参数*  dataName:查询数据库名称*/-(NSMutableArray*) selectSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName;@end

创建的数据库文件位于 /Users/zhaochao/Library/Application Support/iPhone Simulator/7.1/Applications/07D17328-B63C-4D87-9B6C-03AA5CD681EA/Documents/zhaochao.sqlite,

就是 NSString *fileName=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",name]; 这个目录。文件可以直接用SQLiteManager软件打开,也可以在firefox浏览器中安装sqlitemanager插件打开,如下图

3.BaseDB.m

//
//  BaseDB.m
//  SqliteDemo
//
//  Created by 赵超 on 14-8-26.
//  Copyright (c) 2014年 赵超. All rights reserved.
//#import "BaseDB.h"
@implementation BaseDB/**  获取沙盒目录*  name:追加的目录aa**/
-(NSString*) DataBaseName:(NSString *) name {NSString *fileName=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",name];return fileName;
}
/***  选择数据*  sql:查询的SQL语句*  params:查询SQL语句中的参数*  dataName:查询数据库名称*/-(NSMutableArray*) selectSql:(NSString *)sql parmas:(NSArray *)params dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;sqlite3_stmt *stmt=nil;//打开数据库NSString *fileName=[self DataBaseName:dataName];int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打开失败");return nil;}const char* sqlCh=[sql UTF8String];//编译SQL语句sqlite3_prepare_v2(sqlite, sqlCh, -1, &stmt, NULL);//绑定参数for (int i=0; i<params.count; i++) {NSString *param=[params objectAtIndex:i];sqlite3_bind_text(stmt, i+1, [param UTF8String], -1, NULL);}//执行查询语句result=sqlite3_step(stmt);NSMutableArray *resultData=[NSMutableArray array];//遍历结果while (result==SQLITE_ROW) {NSMutableDictionary *resultRow=[NSMutableDictionary dictionary];//获取字段个数int col_count = sqlite3_column_count(stmt);for (int i=0; i<col_count; i++) {//获取字段名称const char*columName=sqlite3_column_name(stmt,i);//获取字段值char* columValue=(char*) sqlite3_column_text(stmt, i);NSString  *columkeyStr=[NSString stringWithCString:columName encoding:NSUTF8StringEncoding];NSString *columValueStr=[NSString stringWithCString:columValue encoding:NSUTF8StringEncoding];[resultRow setObject:columValueStr forKey:columkeyStr];}[resultData addObject:resultRow];result=sqlite3_step(stmt);}//关闭数据库句柄sqlite3_finalize(stmt);//关闭数据库sqlite3_close(sqlite);NSLog(@"查询完!");return  resultData;
}
/***  执行SQL语句,主要完成增加、修改、删除*  sql:执行的SQL语句*  params:SQL语句中的参数*  dataName:数据库名称*/-(BOOL) execSql:(NSString *)sql parmas:(NSArray *)params dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;sqlite3_stmt *stmt=nil;//打开数据库NSString *fileName=[self DataBaseName:dataName];int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打开失败");return NO;}const char* sqlCh=[sql UTF8String];//编译SQL语句sqlite3_prepare_v2(sqlite, sqlCh, -1, &stmt, NULL);//绑定参数for (int i=0; i<params.count; i++) {NSString *parm=[params objectAtIndex:i];sqlite3_bind_text(stmt, i+1, [parm UTF8String], -1, NULL);}//执行SQLresult=sqlite3_step(stmt);if (result==SQLITE_ERROR || result==SQLITE_MISUSE) {NSLog(@"执行SQL语句失败");sqlite3_close(sqlite);return  NO;}//关闭数据库句柄sqlite3_finalize(stmt);//关闭数据库sqlite3_close(sqlite);NSLog(@"执行成功!");return YES;
}/***  创建一个表*  sql:执行的SQL语句*  dataName:数据库名称*/
-(void)createTable:(NSString *)sql dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;NSString *fileName=[self DataBaseName:dataName];//打开数据库int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打开失败");}else{const char* sqlCh=[sql UTF8String];char* error;//执行SQLint result=sqlite3_exec(sqlite, sqlCh, NULL, NULL, &error);if (result!=SQLITE_OK) {NSLog(@"创建失败");NSLog(@"%s",error);sqlite3_close(sqlite);return ;}//关闭数据库sqlite3_close(sqlite);NSLog(@"创建成功");}}@end

4.调用格式

    BaseDB *db=[[BaseDB alloc] init];//创建表NSString *dbCreate=@"create table zhaochao( username text primary key,userPasswd test)";NSString *dbName=@"zhaochao.sqlite";// [db createTable:dbCreate dataBaseName:dbName];//添加数据NSString *insertTable=@"insert into zhaochao (username,userPasswd) values (?,?)";NSArray  *insertParmas=@[@"acasdfaa",@"bb"];// [db execSql:insertTable parmas:insertParmas dataBaseName:@"zhaochao.sqlite"];//修改数据NSString *updateTable=@"update zhaochao set username=? where username=?";NSArray  *updateParams=@[@"admin",@"zhaochao"];// [db execSql:updateTable parmas:updateParams dataBaseName:@"zhaochao.sqlite"];//删除数据NSString *deleteTable=@"delete from zhaochao where username=?";NSArray   *deleteParams=@[@"aa"];// [db execSql:deleteTable parmas:deleteParams dataBaseName:@"zhaochao.sqlite"];//查询数据NSString *selectTable=@"select username,userPasswd from zhaochao where userPasswd=?";NSString *selectParam=@[@"bb"];NSArray *result=[db selectSql:selectTable parmas:selectParam dataBaseName:@"zhaochao.sqlite"];for (int i=0; i<result.count; i++) {NSMutableDictionary *arr=[result objectAtIndex:i];NSLog(@"%@",arr);}

转载于:https://www.cnblogs.com/whzhaochao/p/5023435.html

IOS sqlite数据库增删改查相关推荐

  1. ios Sqlite数据库增删改查基本操作

    2019独角兽企业重金招聘Python工程师标准>>> 研究了几天的数据库,终于把它给搞出来了.Sqlite是ios上最常用的数据库之一,大家还是有必要了解一下的.这是仿照网上的一个 ...

  2. 基于python的SQLite数据库增删改查

    与其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,他的数据库就是一个文件.SQLite将整个数据库,包括定义.表.索引以及数据本身,作为一个单独的.可 ...

  3. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  4. Android Studio SQLite 数据库 增删改查 简单

    源码 效果展示     所有操作都在这个界面完成,操作完直接显示 设计     一个class用来创建数据库,建表,一个activity用来执行增删改查操作 代码 DatebaseHlper impo ...

  5. SQLite数据库-增删改查语句

    Android中自带的数据库----SQLite 这里使用Navicat工具来学习 1.创建新的SQLite连接 数据库文件名字和连接名一样就好 2.数据库的创建语句 //创建一个book表 crea ...

  6. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

  7. iOS CoreData (一) 增删改查

    代码地址如下: http://www.demodashi.com/demo/11041.html Core Data是iOS5之后才出现的一个框架,本质上是对SQLite的一个封装,它提供了对象-关系 ...

  8. android 实现Sqlite的增删改查及系统的登录注册功能

    文章目录 1.用户实体类 2.SQLiteOpenHelper类 3.数据库名常量类 4.数据库增删改查方法封装 5.界面设计 5.1 登录页面 5.2 注册界面 5.3 修改密码界面 6. 源码下载 ...

  9. 常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现

    常用的Mybatis-Plus方法,让你的数据库增删改查(CRUD)一键实现 以下方法全部亲测可用 //测试查找全部@Testpublic void testSelectAll(){List<U ...

最新文章

  1. centos6.3下yum安装redis
  2. Winform中在FastReport的PreviewControl预览控件中对report控件模板中控件值进行修改
  3. Android应用程序运行方式以及优先级
  4. [原创]同一页面无法多次使用XmlHttp发起Ajax请求的真实原因
  5. 程序员真的只能干到35岁?——我的35岁危机度过之道!
  6. 如何用 IDEA 提升十倍开发效率?
  7. 【问题解决方案】anaconda-python在cmd-pip安装requests后依然提示No module named requests
  8. Java设计模式中的单例模式
  9. 基于LD3320的非特定人语音识别方案
  10. Web安全之SQL注入攻击技巧与防范
  11. 20200408_W_水波理论和波浪载荷
  12. SqList *L与SqList *L的区别
  13. mysql 唯一约束和唯一索引_谈谈唯一约束和唯一索引
  14. 2000坐标系xy坐标几位_2000坐标系(2000坐标系x和y坐标几位数)
  15. JQ笔记3-样式操作
  16. RVIZ 的菜单背景变成黑色
  17. 跨平台应用开发进阶(四十五)uni-app集成企微客服实战
  18. 股票图,K线图,蜡烛图,高仿雪球股票
  19. 《软件功能测试自动化实战教程》—第6章6.4节Action测试输入的参数化
  20. 巧用selenium爬取巨潮资讯公司数据

热门文章

  1. listen()与accept()函数的区别
  2. 不干胶标贴打印模板下载_A4纸打印17*6的不干胶标签打印模板如何设置
  3. 程序员Linux学到什么程度,Linux学到什么程度,才可以找到合适的工作?
  4. wordpress怎么设置文章页面不打开新的窗口_2019 WordPress外贸网站SEO优化基础设置(新手图文教程)...
  5. Spring中 @Autowired注解与@Resource注解的区别
  6. es 查询语法_ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
  7. java 斗地主桌号_求用java编写的斗地主程序就,要求可以在局域网内实现两桌以上同时玩。...
  8. bootanimation文件名_Android开机logo制作
  9. Retrofit2 multpart多文件上传详解
  10. 牛客java面试题总结版(三)