sqlite数据库相关总结

1.sql

sqlite是轻量型、关系型管理系统,是嵌入式的,占用资源低、可移植性强,比mySql处理速度快,如今主流的版本是sqlite3数据库

2.函数

sqlite中的数据类型有TEXT(字符串,采用UTF-8,UTF-16编码)、(REAL)浮点型、(INTEGER)有符号的整型、(BLOB)大二进制数据,能存听任何二进制数据、还有其余几个不经常使用的( (VARCHAR、CHAR、CLOB)会转化成TEXT的类型    (FLOAT DOUBLE)转化成REAL类型   (NUMERIC)转化成INTEGER)编码

注:sqlite中没有布尔型,能够用integer的0和1代替,也没有时间和日期的类型,能够用TEXT,REAL等代替spa

3.指针

经常使用的基本的sql语句有:sqlite

------建立表:对象

           creat table 表名 (字段1,字段2,字段3.......);索引

-------若是表不存在,再建立资源

           creat table  if not exists 表名 (字段1,字段2,字段3.......) 

--------删除整张表:

        drop table 表名

--------插入数据:

        insert into 表名 (字段1,字段2,字段3.......)values (值1,值2,值3......)

---------查询:

        select 字段名 from 表名  ---------》查询某一字段的数据

        select * from 表名  ---------》查询全部字段的全部数据

----------修改:

        update 表名 set 字段名 = '新值' where 查询条件

 

4.写代码以前须要在link frameWorks and libraries 里面添加sqlite3的动态库,在数据库相关操做的类中添加头文件,就能够了。

通常数据库咱们要在沙盒的document文件夹下建立一个文件,来做为数据库的保存路径。

5.建立sqlite3 * db 这样一个数据库的对象。sqlite是c语言的类库,函数都为c语言的函数

   打开数据库的方法:

   sqlite3_open([filePath UTF8String], &DB);  -------------》第一个参数为数据库的存储路径,第二个参数为数    据库取地址,是有返回值的,若返回值为SQLITE_OK即打开成功。

   若是数据库打开成功,就能够建立表了,先写sql语句,再用执行函数进行执行:

   例如: 

    NSString * creatSql = @"CREATE TABLE IF NOT EXISTS StudentNum (idNum TEXT PRIMARY KEY,name TEXT);";

        char * err;

        /**

         第一个参数  DB对象

         第二个参数  sql语句

         第三个和第四个参数 回调函数和回调函数传递的参数

         第五个参数  是一个错误信息

         */

        if (sqlite3_exec(DB, [creatSql UTF8String], NULL, NULL, &err) != SQLITE_OK) {

            //失败

        }else{

            //建立表成功

        }

      在打开数据库、建立表失败等的状况下 也须要关闭数据库,也能够抛出错误信息:

            sqlite3_close(DB);

            NSAssert(NO, @"建立表失败");

     最后数据库操做完毕以后也要关闭数据库

 6.查询数据:

在数据库打开成功的状况下就能够进行查询了。

这条sql语句中的?是占位符。

   

    NSString * sql = @"SELECT idNum,name FROM StudentNum where idNum = ?";

    sqlite3_stmt * statement;//语句对象

    //预处理函数

    /*

     第一个参数:数据库对象

     第二个参数:sql语句

     第三个参数:执行语句的长度-1指所有长度

     第四个参数:语句对象

     第五个参数:没有执行的语句部分

     */

    if (sqlite3_prepare_v2(DB, [sql UTF8String], -1, &statement, NULL) == SQLITE_OK) {

        NSString * idNum = model.idNum;

        //绑定函数,绑定占位符要代替的内容

        /*

         第一个参数:语句对象

         第二个参数:数据开始执行的序号

         第三个参数:咱们要绑定的值

         第四个参数:绑定的字符串的长度

         第五个参数:指针  NULL

         */

        sqlite3_bind_text(statement, 1, [idNum UTF8String], -1, NULL);

        //遍历去查询结果 返回值为SQLITE_ROW时表明查询出结果了,可是不能保证全部的数据都遍历了

        if (sqlite3_step(statement) == SQLITE_ROW) {

            //提取数据

            /*

             第一个参数:语句对象

             第二个参数:字段的索引

             */

            char * idNum = (char *)sqlite3_column_text(statement, 0)

            ;

            NSString * idNumStr = [[NSString alloc]initWithUTF8String:idNum];

            char * name = (char *)sqlite3_column_text(statement, 1);

            NSString * nameStr = [[NSString alloc]initWithUTF8String:name];

            studentModel * selectModel = [[studentModel alloc]init];

            selectModel.idNum = idNumStr;

            selectModel.name = nameStr;

            //查询到数据以后释放语句对象,并关闭数据库

            sqlite3_finalize(statement);

            sqlite3_close(DB);

            

        }

    }

相同,当打开数据库失败的时候也是要关闭数据库,抛出异常语句

增删改的顺序和上面查询的代码顺序是同样的,先打开数据库,而后进行预处理,而后绑定,而后遍历数据,而后提取数据,而后释放对象、关闭数据库。

相关文章
相关标签/搜索