zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaScript中的ActiveXObject控制Excel的方法
    事务的作用
    SQL2005关于quotename的用法
    简易办公系统的设计与实现 文献收集
    《UML建模在办公自动化(OA)系统设计中的应用 》论文笔记(四)
    《基于 UML 与 J2EE 的高校 OA 系统的分析与设计》论文笔记(三)
    《浅谈企业办公管理OA系统的设计与实现 》论文笔记(二)
    《基于UML连锁超市OA系统公文流转的设计》论文笔记(五)
    《暗时间》读书笔记
    《无纸化办公管理系统的设计与实现》论文笔记(一)
  • 原文地址:https://www.cnblogs.com/HeiNeiKu/p/5260093.html
Copyright © 2011-2022 走看看