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. 【贪心】【后缀自动机】Gym - 101466E - Text Editor

    题意:给你两个串A,B,以及一个整数K,让你找到B的一个尽可能长的前缀,使得其在A串中出现的次数不小于K次. 对A串建立后缀自动机,然后把B串放在上面跑,由于每到一个结点,该结点endpos集合的大小 ...

  2. LNMP一键安装包如何重装Nginx

    LNMP一键安装包安装好后,相应的Mysql,Nginx及PHP都会安装配置完成. 由于某些特殊情况的需要,如何更换Nginx的版本呢? nginx升级脚本可以完成. 1. 手动编译方法:/usr/l ...

  3. h5的部分新元素或属性

    #h5的新元素或属性 - datalist标签(新表单元素):规定了input元素可能的选项列表.   * 条件:datalist的id属性值必须等于input元素的list属性值.          ...

  4. macbook pro 开发帮助

    java安装目录 /Library/java/JavaVirtualMachines/ 设置快捷目录 vim .bash_profile 文件中追加一下信息:export dirname=目录路径 重 ...

  5. js ajax post 提交的时候后台接收不到参数,但是代码没有错,怎么回事

    这个错误有两点,你自己写的php页面里面的参数接收出错了 还有就是你没有写一句重要的代码告诉浏览器 你使用post提交方式去提交 xhr.setRequestHeader("Content- ...

  6. window api 监控

    http://pnig0s1992.blog.51cto.com/393390/704189

  7. Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8088 failed (13: Permission denied) nginx 启动失败

     Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8088 failed (13: Permission denied)     nginx 启动失败 ...

  8. iOS中安全结束 子线程 的方法

    一个典型的结束子线程的方法:   用 isFinished 检测子线程是否被完全kill掉 -(IBAction)btnBack:(id)sender { //释放内存 仅仅remove 并不会触发内 ...

  9. UCOS移植心得(

    移植UCOS之前,你首先应该做好三件事: 1.弄懂UCOS,这是谁都知道的哦 ^_^ 2. 弄懂你想要移植到的硬件平台 3. 清楚你使用的编译器是如何处理函数的局部变量和怎么样处理函数间的参数传递 这 ...

  10. Mac 在启动eclipse时 Failed to load JavaHL Library解决方法

    在Mac 10.9.1系统里, 在Eclipse中安装svn的插件,出现如下提示 方法一: 1.根据提示进入链接 http://subclipse.tigris.org/wiki/JavaHL 2. ...