IOS sqlite数据库增删改查
1.简单介绍
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,
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数据库增删改查的更多相关文章
- 转:ios Sqlite数据库增删改查基本操作
研究了几天的数据库,终于把它给搞出来了.Sqlite是ios上最常用的数据库之一,大家还是有必要了解一下的.这是仿照网上的一个例子做的,有些部分写的不好,我稍作了修改,以讲解为主,主要让大家能够明白如 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)
在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...
- SQLite数据库增删改查操作
一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...
- Android SQLite数据库增删改查操作
一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...
- SQLite数据库增删改查
一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...
- IOS Sqlite用户界面增删改查案例
1.案例简单介绍 对SQLite操作进行了简单的封装,将对数据表操作转变成对对象的操作,并通过UI界面完毕对用户表的增.删.改.查,执行界面例如以下图所看到的 a 2.项目project文件夹 Use ...
- 通过API函数来控制SQLite数据库增删改查
person类属性有Intenger id,String name,Intenger age,相应的构造方法和set get方法. package com.xh.tx.dao; import and ...
随机推荐
- 大型系统中使用JMS优化技巧–Sun OpenMQ
我们先来看看在Sun OpenMQ系统中 一个持久.可靠的方式传送消息的步骤是怎么样的,如图所示: 查看大图请点击这里 在传送过程中,系统处理JMS消息分为以下两类: ■ 有效负荷消息,由生成方发 ...
- Codedforces 1076G Array Game 线段树
题意 现在cf上看题意真nm麻烦,有道网页翻译和谷歌翻译鬼畜的一匹 两个人在玩一个游戏. 有一个有\(n\)个数序列\(B\),一开始有一个棋子在\(B\)的第一个位置. 双方轮流操作,第一次操作前将 ...
- Javascript 继承-原型的陷阱
注:本文为翻译文章,原文为"JavaScript Inheritance – How To Shoot Yourself In the Foot With Prototypes!" ...
- ASP.NET Web API 记录请求响应数据到日志的一个方法
原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...
- PHP self与static区别
this,static和self. self和this还是很好区分的,可是self和static就很糊涂了,两者都能调用静态的方法和属性,看似使用上没有什么太大的分别,但是实际上分别很大,先来看下面这 ...
- unity热更新
Unity3D 学习笔记4 —— UGUI+uLua游戏框架 C#Light 和 uLua的对比第二弹 在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理 Ulua_toLua_基本案例 Uni ...
- JS仿淘宝左侧菜单
http://www.webdm.cn/webcode/1c724a06-06f4-4c4f-931a-c683285fa700.html
- hdu2158
最短区间版大家来找碴 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- vim 之cscope的使用
http://www.mcuos.com/thread-8488-1-1.html http://blog.csdn.net/longerzone/article/details/7789581 ht ...
- Python中函数的参数传递与可变长参数
转自旭东的博客原文 Python中函数的参数传递与可变长参数 Python中传递参数有以下几种类型: (1)像C++一样的默认缺省函数 (2)根据参数名传参数 (3)可变长度参数 示例如下: (1)默 ...