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

SQLite关系数据库

时间:2015-09-02 00:07:58      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:


----------------------
存储数据- SQLite关系数据库 
----------------------
 
SQLite 关系数据库 
 
1.导入: 数据库-build phases -link binary with libraries -+libsqlite3.dylib
 
2.#import <sqlite3.h>
 
3.@interface ZYViewController ()
{
    sqlite3 *_db;
}
@end
 
-------------------------
4.打开数据库 (使用数据库打开,使用完毕,要关闭;)
-------------------------
// sqlite3_open 给予一个文件名,检测存在,不存在则创建文件并打开,存在则打开。[返回值是int]
          //第一个:文件名称,要转成 c语言  第二个:数据库的实例
 
- (BOOL)openDb
{
    NSString *fileName = [ NSHomeDirectory() stringByAppendingString:@"/Documents/db.sqlite3" ];
   
    if ( sqlite3_open(fileName.UTF8String , &_db) == SQLITE_OK) {
        NSLog(@" 数据库打开成功 ");
        return YES ;
        } else {
        NSLog(@" 数据库打开失败 ");
        return NO ;
    }
}
-------------------------
5.创建表
-------------------------
//创建一个表,如果不存在, 创建字段,分别是啥类型
//sqlite3_exec  1:句柄,2:sql 语句 3:回调函数 4:null 5:参数错误信息
 
-(void)createTable
{
    if ([ self openDb ] == NO) {
        return;
    }
   
    const char *creatSql = "create table if not exists oneTable (id integer primary key,name text)";
   
    if ( sqlite3_exec(_db , creatSql, NULL, NULL, NULL ) == SQLITE_OK) {
        NSLog(@" -创建成功 ");
    } else {
        NSLog(@" -创建失败 ");
    }
   
    sqlite3_close( _db);
}
 
-------------------------
6.插入
-------------------------
插入
 
//sqlite3_prepare_v2解析 sql语句,为插入数据做准备,转成内部能识别语句 //-1表示让系统来计算数据长度
id在第 0位置)
//statemet声明
 
- (void)insertTable
{
    if ([ self openDb ] ==NO) {
        return;
    }
 
    NSString *name = @"大牛" ;
    NSInteger age = 23;
   
    const char *theName = [name UTF8String ];
   
    //sql语句
    const char *insertTable = "insert into fristTable (name,age) values (-,-)";
   
    //statemet声明
    sqlite3_stmt *stmt;
   
    if ( sqlite3_prepare_v2(_db , insertTable, -1, &stmt, NULL) == SQLITE_OK ) {
       sqlite3_bind_text(stmt, 1 , theName, -1, NULL);
       sqlite3_bind_int(stmt, 2 , age);
   }
   
   if ( sqlite3_step(stmt) == SQLITE_DONE ) {
       NSLog(@" 插入成功");
   }else
   {
       NSLog(@" 插入失败");
   }
 
   sqlite3_finalize(stmt);
   sqlite3_close( _db);
}
-------------------------
7.查询
-------------------------
//*代表查询去全部
//sqlite3_prepare_v2 1:句柄 2:sql 语句 3 sql长度(-1,系统计算) 4:取数据 5:一般写NUll
 
- (void)selectTable
{
    if ([ self openDb ] == NO) {
        return;
    }
    const char *selectSql = "select * from fristTable" ;
//  const char *selectSql = "select id,name,age from fristTable where id=1";
 
  sqlite3_stmt *stmt;
 
     sqlite3_prepare_v2(_db , selectSql, -1, &stmt, NULL);
   
    while ( sqlite3_step(stmt) == SQLITE_ROW ) {
        const unsigned   char *name  = sqlite3_column_text(stmt, 1 );
        if (name != NULL ) {
            NSString *getName = [NSString stringWithUTF8String:(const char *)name];
            NSLog(@"name:%@" ,getName);
                   }
       
        NSInteger theid = sqlite3_column_int (stmt, 0);
        NSLog(@"id:%d" ,theid);
       
        NSInteger age = sqlite3_column_int (stmt, 2);
        NSLog(@"age:%d" ,age);
       
    }
 
    sqlite3_finalize(stmt);
    sqlite3_close( _db);
}
 
 
 
 
 
  

SQLite关系数据库

标签:

原文地址:http://www.cnblogs.com/abin37/p/4777062.html

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