Sqlite

一、Sqlite数据类型: NULL. 空值、INTEGER. 整型、REAL.浮点型、TEXT.文本类型、BLOB. 二进制类型,用来存储文件,好比图片。sql

二、使用sqlite3 首先要导入libsqlite3.dylib,并导入头文件Sqlite3.h。定义  sqlite3 *_db;数据库

三、设置数据文件存放路径,如沙盒的Doucuments文件夹内。sqlite

    NSString *_dbpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/mySql.sqlite"];对象

    NSLog(@"%@",_dbpath);图片

四、打开数据表   sqlite3_open方法字符串

    打开数据库文件,第一个参数表明数据库文件的路径,注意须要调用UTF8String方法将NSString转换成C的字符串格式,第二个参数表明数据库对象,该方法若是返回0(SQLITE_OK),表明数据库代开成功,若是该路径没有数据库文件,则先建立再打开,不然直接打开string

     int r = sqlite3_open([_dbpath UTF8String], &_db);it

五、建立数据表   create table if not exists(若是表不存在) Student(表名,本身定义) (该括好放要保存的信息:字段名 字段格式,多个字段之间用逗号隔开)table

    NSString *path = @"create table if not exists Student(name TEXT,age INTEGER)";//若是数据库中没有Student表,则建立该表,包含 字符串形式的name和整型的agedate

六、执行数据库语句  

//执行数据库语句: 第一个参数表明执行的数据库对象,也就是打开的数据库,第二个参数表明执行语句,后面三个直接给NULL便可

    sqlite3_exec(_db, [path UTF8String], NULL, NULL, NULL);

七、增长(插入)

     //sql插入语句:insert into Student(表名) (要进行保存的字段名,名字之间用逗号隔开) values(要保存的实际数据,多个数据用逗号隔开,注意:此处数据要与前面的字段名保持一致,且若是是TEXT类型,须要用单引号引发来)

    NSString *s = @"insert into Student(name,age) values('小明',19)";

    sqlite3_exec(_db, [s UTF8String], NULL, NULL, NULL);

    NSString *s1 = @"insert into Student(name,age) values('小红',21)";

    sqlite3_exec(_db, [s1 UTF8String], NULL, NULL, NULL);

八、删除

      //sql删除语句: delete(关键字) from Student(表名) where(条件关键字) name(字段名) = ‘小明’(要删除数据的条件,若是是TEXT,用单引号引发来)

    NSString *desqlite = @"delete from Student where name = '小明'";

    sqlite3_exec(_db, [desqlite UTF8String], NULL, NULL, NULL);

    //删除所有

    NSString *alldel = @"delete from Student";

    sqlite3_exec(_db, [alldel UTF8String], NULL, NULL, NULL);

九、更新(改)

       //sql更新语句:update(关键字) Student(表名) set(关键字,赋值) age(字段名) = 25(要更改的值,若是要更新多个字段,则用逗号隔开) where(条件关键字) rowid(字段名) = 5(条件得看表中具体是那一行)

    NSString *upsql = @"update Studnet set age = 19,name = '小李' where rowid = 5";

    sqlite3_exec(_db, [upsql UTF8String], NULL, NULL, NULL);

十、查询语句

     //查询全部:select(关键字) * from Student(表名)

    NSString *querysql = @"select *from Studnet";

    sqlite3_stmt *_stmt = nil;//用于存放查询结果

    int res = sqlite3_prepare(_db, [querysql UTF8String], -1, &_stmt, NULL);//检查sql语句的合法性,若是合法则直接运行,返回结果为0

    if (res == 0) {

        //遍历结果集_stmt,若是sqlite3_step返回100,表明有查询结果,先取出第一条,而后再指向下一条,直到sqlite3_step返回101,表明遍历结束

        while (SQLITE_ROW == sqlite3_step(_stmt)) {

            //取出单行结果中的某一列,从0开始

            const unsigned char *s = sqlite3_column_text(_stmt, 0);

            //将查询结果转换成oc字符串

            NSString *name = [NSString stringWithUTF8String:(const char *)s];

            NSLog(@"%@",name);           

        }

    }

 十一、条件查询

    NSString *querysql1 = @"select *from Student where age<20";

    sqlite3_stmt *_stmt1 = nil;//用于存放查询结果

    int res1 = sqlite3_prepare(_db, [querysql1 UTF8String], -1, &_stmt1, NULL);//检查sql语句的合法性,若是合法则直接运行,返回结果为0

    if (res1 == 0) {

        //遍历结果集_stmt,若是sqlite3_step返回100,表明有查询结果,先取出第一条,而后再指向下一条,直到sqlite3_step返回101,表明遍历结束

        while (SQLITE_ROW == sqlite3_step(_stmt1)) {

            //取出单行结果中的某一列,从0开始

            const unsigned char *s1 = sqlite3_column_text(_stmt1, 0);

            //将查询结果转换成oc字符串

            NSString *name1 = [NSString stringWithUTF8String:(const char*)s1];

            NSLog(@"%@",name1);

        }

    }

 十二、关闭数据库

         sqlite3_close(_db);// 关闭数据库

相关文章
相关标签/搜索