码迷,mamicode.com
首页 > 数据库 > 详细

Sqlite使用

时间:2015-09-20 22:00:10      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

手机移动客户端作为软件需要使用数据库来存取数据,iOS使用的数据库是轻量型数据库sqlite,下面是使用sqlite进行简单的增删改查操作.

Sqlite最新版本是3.0,使用前需要导入libsqlite3.0.dylib

一:创建数据库表

-(void)createTable
{
    //创建sqlite3对象
    sqlite3 *sqlite=nil;
    //获取文件路径
    NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.sqlite"];
    NSLog(@"%@",filePath);
    //打开数据库
    int result=sqlite3_open([filePath UTF8String], &sqlite);
    if (result!=SQLITE_OK) {
        NSLog(@"打开失败");
        return;
    }
    //SQL语句
    NSString *sql=@"create table if not exists user(username text primary key,password text,email text)";
    //创建错误信息
    char *error;
    result=sqlite3_exec(sqlite, [sql UTF8String], NULL, NULL, &error);
    if (result!=SQLITE_OK) {
        NSLog(@"%s",error);
        return;
    }
    //关闭数据库
    sqlite3_close(sqlite);
}

 

二:数据库中插入数据

-(void)insertTable
{
    sqlite3 *sqlite=nil;
    sqlite3_stmt *stmt=nil;
    NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.sqlite"];
    //打开数据库
    int result=sqlite3_open([filePath UTF8String], &sqlite);
    if (result!=SQLITE_OK) {
        NSLog(@"打开失败");
        return;
    }
    //向数据库中插入文件,大多数情况下是由用户输入的内容,所以sql语句使用?占位符
    NSString *sql=@"insert into user(username,password,email) values (?,?,?)";
    //编译sql语句
    sqlite3_prepare(sqlite, [sql UTF8String], -1, &stmt, NULL);
    NSString *username=@"tom";
    NSString *password=@"asd";
    NSString *email=@"yshjbw@163.com";
    //绑定第一个数据
    sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL);
    //第二个
    sqlite3_bind_text(stmt, 2, [password UTF8String], -1, NULL);
    //第三个
    sqlite3_bind_text(stmt, 3, [email UTF8String], -1, NULL);
    //执行SQL语句
    result=sqlite3_step(stmt);
    if (result==SQLITE_ERROR||result==SQLITE_MISUSE) {
        NSLog(@"执行SQL语句失败");
        return;
    }
    //关闭数据库句柄
    sqlite3_finalize(stmt);
    sqlite3_close(sqlite);
    NSLog(@"插入成功");
}

 

三:查询

-(void)selectTable
{
    sqlite3 *sqlite=nil;
    sqlite3_stmt *stmt=nil;
    NSString *filePath=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.sqlite"];
    //打开数据库
    int result=sqlite3_open([filePath UTF8String], &sqlite);
    if (result!=SQLITE_OK) {
        NSLog(@"打开失败");
        return;
    }
    //向数据库中插入文件,大多数情况下是由用户输入的内容,所以sql语句使用?占位符
    NSString *sql=@"select username,password,email from user where username=‘tom‘";
    //编译sql语句
    result=sqlite3_prepare_v2(sqlite, [sql UTF8String], -1, &stmt, NULL);
    if (result!=SQLITE_OK) {
        return;
    }
    //往占位符上绑定数据
    NSString *username=@"tom";
    sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL);
    
    //查询数据
    result=sqlite3_step(stmt);
    //若result=SQLITE_ROW,说明有结果,获取结果
    while (result==SQLITE_ROW) {
       char *username=(char *)sqlite3_column_text(stmt, 0);
        char *password=(char *)sqlite3_column_text(stmt, 1);
       char *email=(char *)sqlite3_column_text(stmt, 2);
        NSString *userName=[NSString stringWithCString:username encoding:NSUTF8StringEncoding];
        NSString *passWord=[NSString stringWithCString:password encoding:NSUTF8StringEncoding];
         NSString *Email=[NSString stringWithCString:email encoding:NSUTF8StringEncoding];
        NSLog(@"%@,%@,%@",userName,passWord,Email);
            result=sqlite3_step(stmt);
    }
    //关闭数据库句柄
    sqlite3_finalize(stmt);
    sqlite3_close(sqlite);
    NSLog(@"查询成功");
}


一直想写些有关数据存储方面的知识,但是这个是自己的弱项,憋了这么久,就憋出个这,唉,跟充数一样。

Sqlite使用

标签:

原文地址:http://www.cnblogs.com/kyuubee/p/4824221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!