iOS中的SQLite数据库

1、基本概念

 

什么是SQLite数据库?

 

免费开源的,应用在嵌入式设备上的关系型数据库

 

特点:

 

1)客户端和服务器在同一进程中运行

 

2)单个文件进行数据存储,权限跟文件的权限有关系

 

3)可移植性好,可以编译在其他的应用程序中

 

 

最新的版本3.0

 

下载地址:http://www.sqlite.org

 

 

2SQLite使用入门

 

导入类库到工程

 

Libsqlite3.0.dylib

 

//定义数据库文件的路径

 

1)打开(或创建)数据表

 

2)编译SQL语句

 

3)执行SQL语句

 

4)销毁对象

 

5)关闭SQLite

 

 

 

 

3、创建一个user表(create table xxx

 

    //首先使用sqlite数据库

    sqlite3 *sqlite=nil;

   

    //创建数据库文件NS

    NSString *dbfilePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents/db.sqlite"];

   

    //打开数据库  sqlite3_open(数据库文件路径,sqlite的指针)

    int result = sqlite3_open([dbfilePathUTF8String], &sqlite);

   

    if (result!=SQLITE_OK) {

        //创建失败了

        NSLog(@"数据文件创建失败!");

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

        return ;

    }

   

    //执行创建表的SQL语句

    NSString *sql = @"create tableuser(uid text primary key,name text,phonenum text)";

   

    char *err;

    result = sqlite3_exec(sqlite, [sqlUTF8String], NULL, NULL, &err);

    if (result!=SQLITE_OK) {

         NSLog(@"sql语句执行错误!\n %s",err);

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

         return ;

    }

 

    NSLog(@"数据库表创建成功~");

    //关闭数据库

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

 

 

4、向表中插入数据(insert into xxx)

 

//打开数据库

    //首先使用sqlite数据库

    sqlite3 *sqlite=nil;

   

    //定义预编译的指针

    sqlite3_stmt *stmt;

   

    //创建数据库文件

    NSString *dbfilePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents/db.sqlite"];

   

    //打开数据库  sqlite3_open(数据库文件路径,sqlite的指针)

    int result = sqlite3_open([dbfilePathUTF8String], &sqlite);

   

    if (result!=SQLITE_OK) {

        //创建失败了

        NSLog(@"数据库打开失败!");

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

        return ;

    }

   

    //执行sql

    //NSString *sql =@"insert into user values('3','李四','0312-3838438')";

   

    //采用预编译的方式sql语句参数的绑定的问题

   

    NSString *sql = @"insert into uservalues(?,?,?)";

 

    //sql语句的预编译

    result = sqlite3_prepare_v2(sqlite, [sqlUTF8String], -1, &stmt, NULL);

    if (result!=SQLITE_OK) {

        NSLog(@"sql语句编译错误!\n ");

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

        return ;

    }

   

    //绑定一个参数

    sqlite3_bind_text(stmt, 1, [@"4"UTF8String], -1, NULL);

    sqlite3_bind_text(stmt, 2,[@"凤姐" UTF8String], -1, NULL);

    sqlite3_bind_text(stmt, 3,[@"0312-3838438" UTF8String], -1, NULL);

   

    //执行sql

    result = sqlite3_step(stmt);

 

    if (result == SQLITE_ERROR || result ==SQLITE_MISUSE) {

        NSLog(@"sql语句执行错误!\n");

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

        return ;

    }

   

    NSLog(@"数据插入成功~");

   sqlite3_finalize(stmt);  //销毁stmt指针

    //关闭数据库

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

 

 

5、通过查询(select)查询sqlite中的数据

 

//首先使用sqlite数据库

    sqlite3 *sqlite=nil;

   

    //定义预编译的指针

    sqlite3_stmt *stmt;

   

    //创建数据库文件

    NSString *dbfilePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents/db.sqlite"];

   

    //打开数据库  sqlite3_open(数据库文件路径,sqlite的指针)

    int result = sqlite3_open([dbfilePathUTF8String], &sqlite);

   

    if (result!=SQLITE_OK) {

        //创建失败了

        NSLog(@"数据库打开失败!");

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

        return ;

    }

 

    NSString *sql = @"select * from userwhere uid>=?";

    result = sqlite3_prepare_v2(sqlite, [sqlUTF8String], -1, &stmt, NULL);

    if (result!=SQLITE_OK) {

        NSLog(@"sql语句编译错误!\n ");

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

        return ;

    }

   

    //uid>1

    sqlite3_bind_text(stmt, 1, [@"1"UTF8String], -1, NULL);

    //开始查询

    result = sqlite3_step(stmt);

   

    //遍历读取

    while (result == SQLITE_ROW) {

       

        //从数据表中获取数据

        char *uid= (char*)sqlite3_column_text(stmt, 0);

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

        char *phonenum= (char*)sqlite3_column_text(stmt, 2);

       

        NSString *uidStr = [NSStringstringWithCString:uidencoding:NSUTF8StringEncoding];

        NSString *nameStr = [NSStringstringWithCString:nameencoding:NSUTF8StringEncoding];

        NSString *phonenumStr = [NSStringstringWithCString:phonenumencoding:NSUTF8StringEncoding];

       

       NSLog(@"#uid:%@,name:%@,phonenum:%@\n",uidStr,nameStr,phonenumStr);

       

        //查询下一行

        result = sqlite3_step(stmt);

       

    }

   

    //关闭操作释放资源

    sqlite3_finalize(stmt);

    sqlite3_close(sqlite);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值