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插件打开,例如以下图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2h6aGFvY2hhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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);
}
//运行SQL
result=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;
//运行SQL
int 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);
}


IOS sqlite数据库增删改查的更多相关文章

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

    研究了几天的数据库,终于把它给搞出来了.Sqlite是ios上最常用的数据库之一,大家还是有必要了解一下的.这是仿照网上的一个例子做的,有些部分写的不好,我稍作了修改,以讲解为主,主要让大家能够明白如 ...

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

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

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

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  4. 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

    在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...

  5. SQLite数据库增删改查操作

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

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

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

  7. SQLite数据库增删改查

    一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...

  8. IOS Sqlite用户界面增删改查案例

    1.案例简单介绍 对SQLite操作进行了简单的封装,将对数据表操作转变成对对象的操作,并通过UI界面完毕对用户表的增.删.改.查,执行界面例如以下图所看到的 a 2.项目project文件夹 Use ...

  9. 通过API函数来控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import and ...

随机推荐

  1. luoguP4336 [SHOI2016]黑暗前的幻想乡 容斥原理 + 矩阵树定理

    自然地想到容斥原理 然后套个矩阵树就行了 求行列式的时候只有换行要改变符号啊QAQ 复杂度为\(O(2^n * n^3)\) #include <cstdio> #include < ...

  2. Easy File Sharing Web Server 6.9远程溢出漏洞

    from struct import pack import socket,sys import os host="192.168.109.129" port=80 junk0 = ...

  3. hdu 4545 贪心 *

    题意:小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转 换使小明的串和小西的变成同一个,那么他们两个人都 ...

  4. Java集合的ConcurrentModificationException

    简单复习一下集合顺带提一下这个错误,其实也比较常见,大多是因为疏忽的原因吧: 我们创建一个集合,添加了一些元素,使用迭代器来遍历,然后遍历途中需要进行一些逻辑操作,对集合进行修改,然后就报错了,这是什 ...

  5. Python环境右键定制

    有时候,我们需要将py打包成exe.需要将ui转换成py.需要将py转换成pyc等等,命令行操作起来有点繁琐.所以做了这个教程: 1. py打包成exe 先安装cx_freeze,参照教程:http: ...

  6. angularJS简介及其特点—— 五大特性,加快 Web 应用开发

    AngularJS 是谷歌的一个 JavaScript 框架,旨在简化前端应用程序的开发. 一. 关于和jquery的比较 首先angular是一个mvc框架,它与jquery不同之处在于,前者致力于 ...

  7. ZOJ 2819 Average Score 牡丹江现场赛A题 水题/签到题

    ZOJ 2819 Average Score Time Limit: 2 Sec  Memory Limit: 60 MB 题目连接 http://acm.zju.edu.cn/onlinejudge ...

  8. Alpha冲刺(1/10)——追光的人

    1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...

  9. Android开发点点滴滴——一些基础的但实用的知识(2)

    1.onItemLongClick和onItemClick事件截取 当须要同一时候获得一个listview的条目长按事件(onItemLongClick)和点击事件(onItemClick)时,仅仅须 ...

  10. 在win7下安装VC6.0

    一.以系统管理员的身份执行VC6.0安装文件 二.在安装或者使用VisualC++6.0时,凡是出现兼容性问题提示对话框,一律按下面方式处理--把"不再显示此消息"打上勾,然后选择 ...