IOS SQLite基本操作

再所有操作之前先添加libsqlite这个库以及引入sqlite3.h头文件

一,创建数据库打开数据库,关闭数据库

    NSString *sqlPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    sqlPath = [_sqlPath stringByAppendingPathComponent:@"students.sqlite"];
    sqlite3 *sql;
    int result =  sqlite3_open(self.sqlPath.UTF8String, &sql);
    if(result == SQLITE_OK)
    {
        NSLog(@"打开数据库成功");
        self.sql = sql;
        return YES;
    }
    NSLog(@"打开数据库失败");
    sqlite3 *sql = self.sql;
    if(sqlite3_close(sql) == SQLITE_OK){
        NSLog(@"关闭数据库成功");
        return YES;
    }

二、插入数据

拼接语句

    [self openDataBase];
    NSString *sqlString = [NSString stringWithFormat:@"insert into t_student(name) values(‘毛小东‘)"];
    sqlite3 *sql = self.sql;
    char *error;
    int result = sqlite3_exec(sql, sqlString.UTF8String,NULL, NULL, &error);
    if(result == SQLITE_OK)
        NSLog(@"插入成功");
    [self closeDataBase];

  暂位符方式

    NSString *sqlString = @"insert into t_student(name) values(?)";
    sqlite3_stmt *stmt;
    int result  = sqlite3_prepare_v2(self.sql, sqlString.UTF8String, -1, &stmt, NULL);
    if(result == SQLITE_OK){
        sqlite3_bind_text(stmt, 1, [NSString stringWithFormat:@"叶衍宏"].UTF8String, -1, NULL);
    }
    int resultInsert = sqlite3_step(stmt);
    if(resultInsert == SQLITE_DONE)
        NSLog(@"插入成功");

    [self closeDataBase];

二,查询

    [self openDataBase];
    NSString *sqlString = [NSString stringWithFormat:@"select id,name from t_student"];
    sqlite3_stmt *stmt;
    int result = sqlite3_prepare_v2(self.sql, sqlString.UTF8String, -1, &stmt, NULL);
    if(result == SQLITE_OK){
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            int studentId = sqlite3_column_int(stmt, 0);
            NSString *studentName =  [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];
            NSLog(@"ID = %d  姓名 = %@",studentId,studentName);
        }
    }
    sqlite3_finalize(stmt);
    [self closeDataBase];

三,删除

    [self openDataBase];
    NSString *sqlString = [NSString stringWithFormat:@"delete from t_student where id = 5"];
    char *error;
    int result = sqlite3_exec(self.sql, sqlString.UTF8String, NULL, NULL, &error);
    if(result == SQLITE_OK)
        NSLog(@"成功");
    [self closeDataBase];

四,更改

    [self openDataBase];
    NSString *sqlString = [NSString stringWithFormat:@"update t_student set name = ‘毛茸茸‘ where id = 3"];
    char *error;
    int result = sqlite3_exec(self.sql, sqlString.UTF8String, NULL, NULL, &error);
    if(result == SQLITE_OK)
        NSLog(@"修改成功");
    [self closeDataBase];

  

五,常用方法

//打开数据库函数,

SQLITE_API int SQLITE_STDCALL sqlite3_open(

const char *filename,   /* Database filename (UTF-8) *///数据库文件路径

sqlite3 **ppDb          /* OUT: SQLite db handle */ //数据库句柄

);

//关闭数据库

SQLITE_API int SQLITE_STDCALL sqlite3_close(sqlite3*);

//执行SQL语句,可以执行增删查改等操作,不过一般不拿来执行查操作,因为返回不是所查询的数据

SQLITE_API int SQLITE_STDCALL sqlite3_exec(

sqlite3*,                                  /* An open database *///数据库句柄

const char *sql,                           /* SQL to be evaluated *///SQL语句

int (*callback)(void*,int,char**,char**),  /* Callback function *///执行完毕回调

void *,                                    /* 1st argument to callback *///回调block第一个参数

char **errmsg                              /* Error msg written here *///错误信息

);

//检查SQL语句

SQLITE_API int SQLITE_STDCALL sqlite3_prepare_v2(

sqlite3 *db,            /* Database handle */  //数据库句柄

const char *zSql,       /* SQL statement, UTF-8 encoded */ // SQL语句

int nByte,              /* Maximum length of zSql in bytes. */  SQL语句最大长度,-1为不检查

sqlite3_stmt **ppStmt,  /* OUT: Statement handle */  sqlite3_stmt 实例,可以获取数据

const char **pzTail     /* OUT: Pointer to unused portion of zSql */

);

DEMO:http://pan.baidu.com/s/1mhdPQp6

时间: 2024-11-10 11:24:33

IOS SQLite基本操作的相关文章

SQLite基本操作-----IOS(如有雷同,纯属巧合)

一.常用方法 sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似 sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句 sqlite3_open(),   打开数据库,没有数据库时创建. sqlite3_exec(),   执行非查询的sql语句 Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动. Sqlite3_close(), 关闭数据库文件 还有一

iOS sqlite数据库实现(转)

转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在展示的xcodepro文件配置界面中配置 build phases -> Link Binary With Libraries -->+ -->libsqlite3.dylib 2 在当前项目中添加sqlite 数据库 3 实现app运行时,将sqlite文件复制到沙盒中 4 实现查询数据库

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

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

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

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

iOS数据库SQLite基本操作

数据库操作几点建议: 注意sql执行语句的字符串的拼写.(一定要注意拼写,深受其害  T_T  ) Obj-C中SQLite常用函数. (没几个,sqlite3_open,sqlite3_close,sqlite3_exec,sqlite3_perpare_v2,sqlite3_step,sqlite3_column_*,……)(外加两个对象:sqlite,sqlite_stmt) SQLite语法.(一般的数据库操作都一样) 如果做大一点的项目的话,数据库操作还是尽可能的封装吧. 善用搜索.(

iOS SQLite详解

这周比较忙,前几天都加班到11点左右,基本都是到家都是12点左右(稍稍的抱怨一下,免费加班,何为免费,就是任何补偿都没有,例如调休,加班薪,餐补等各项福利,是一点都没有呀)因为App要上线了!App上线,也可以抽出部分时间整理自己的东西啦,准备花一周时间讲述iOS数据存储方式.本篇主要是讲SQLite的使用和封装,读完大约10-15分钟. 一.SQLite概念 SQLite是轻量型关系型数据库(下面将拓展关系型数据库的概念):占用资源非常少:是无类型的数据库(意思是可以保存所有类型的数据)---

IOS SQLite数据库

简介 在IOS中使用Sqlite来处理数据.如果你已经了解了SQL,那你可以很容易的掌握SQLite数据库的操作. 实例步骤 1.创建一个简单的View based application 2.选择项目文件,然后选择目标,添加libsqlite3.dylib库到选择框架 3.通过选择" File-> New -> File... -> "选择 Objective C class 创建新文件,单击下一步 4."sub class of"为NSObje

SQLite基本操作总结

sqlite提供的是一些C函数接口,你可以用这些函数操作数据库.通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 sqlite 函数,sqlite 就会为你操作数据库.sqlite 跟MS的access一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引.触发器等等,但是,它实际上得到的就是一个文件.备份这个文件就备份了整个数据库. sqlite 不需要任何数据库引擎,这意味着如果你需要 sqlite 来保存一些用户数据,甚至都不需

iOS SQLite使用

数据库的特征: 以一定方式存储在一起 能为多个用户分享 具有尽可能少的冗余代码 与程序彼此独立的数据集 SQLite SQLite是一个轻量级关系数据库,最初的设计目标是用于嵌入式系统,它占用资源非常少.在iOS中,只需要加入li'blibsqlite3.0依赖以及引入sqlite3.h头文件即可. SQLite是无类型的数据库,可以保存任何类型的数据,对于SQLite来说对字段不指定类型是完全有效的 SQLite近似类似规则 如果类型字符串中包含"INT",那么该字段的亲缘关系是IN