IOS sqlite数据库增删改查

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);
    }
    //运行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 *[email protected]"create table zhaochao( username text primary key,userPasswd test)";
    NSString *[email protected]"zhaochao.sqlite";
   // [db createTable:dbCreate dataBaseName:dbName];

    //加入数据
    NSString *[email protected]"insert into zhaochao (username,userPasswd) values (?

,?)";
    NSArray  *[email protected][@"acasdfaa",@"bb"];
   // [db execSql:insertTable parmas:insertParmas dataBaseName:@"zhaochao.sqlite"];

    //改动数据
    NSString *[email protected]"update zhaochao set username=? where username=?";
    NSArray  *[email protected][@"admin",@"zhaochao"];
   // [db execSql:updateTable parmas:updateParams dataBaseName:@"zhaochao.sqlite"];

    //删除数据
    NSString *[email protected]"delete from zhaochao where username=?

";
    NSArray   *[email protected][@"aa"];
   // [db execSql:deleteTable parmas:deleteParams dataBaseName:@"zhaochao.sqlite"];

    //查询数据
    NSString *[email protected]"select username,userPasswd from zhaochao where userPasswd=?";
    NSString *[email protected][@"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);
    }
时间: 2024-10-24 02:18:18

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

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

研究了几天的数据库,终于把它给搞出来了.Sqlite是ios上最常用的数据库之一,大家还是有必要了解一下的.这是仿照网上的一个例子做的,有些部分写的不好,我稍作了修改,以讲解为主,主要让大家能够明白如何修改,明白原理,达到举一反三的目的. 先来看看效果图 先来看看数据库方法类,将各个操作都封装在一个类里面,达到代码重用的目的,这是程序员都应该努力去实现的目标,这样在下一次用到同样的方法和类的时候,就可以直接使用封装好的类,可以节约大量的时间. 先来看看.h文件 #import <Foundati

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

研究了几天的数据库,终于把它给搞出来了.Sqlite是ios上最常用的数据库之一,大家还是有必要了解一下的.这是仿照网上的一个例子做的,有些部分写的不好,我稍作了修改,以讲解为主,主要让大家能够明白如何修改,明白原理,达到举一反三的目的. 先来看看效果图 先来看看数据库方法类,将各个操作都封装在一个类里面,达到代码重用的目的,这是程序员都应该努力去实现的目标,这样在下一次用到同样的方法和类的时候,就可以直接使用封装好的类,可以节约大量的时间. 先来看看.h文件 #import <Foundati

【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

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

在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLite以后,发现有这么个迷你的小数据库,就像女生的包包随身携带的小镜子一样,放在哪里都能使用. 废话少说,SQLite提供了如何连接.关闭等数据库操作,但真正的增.删.改.查等语句同Sqlserver.ORACLE是一样的. 首先,是创建SQLite数据库文件(写了一个方法): Public stat

SQLite数据库增删改查操作

一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n). char(n).decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型. SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段

Android SQLite数据库增删改查操作

一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n). char(n).decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型. SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段

SQLite数据库增删改查

一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data->应用名称->databases .如下图: 二:使用SQLite数据库首相要了解这两个类:SQLiteOpenHelper   SQLiteDatabase. 1:SQLiteOpenHelper 介绍: SQLiteOpenHelper:A helper class to manage da

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

1.案例简单介绍 对SQLite操作进行了简单的封装,将对数据表操作转变成对对象的操作,并通过UI界面完毕对用户表的增.删.改.查,执行界面例如以下图所看到的 a 2.项目project文件夹 UserModel类为用户对象模型.与数据库表中字段一一相应 BaseDB类为对sqlite简单封装,抽象出对数据库操作的三个方法.详细内容看http://blog.csdn.net/whzhaochao/article/details/38865535博文 UserDB继承于BaseDB.主要是完毕Us