IOS 學習筆記 2015-04-09 0C-SQLite 資料存放區,iossqlite儲存圖片

來源:互聯網
上載者:User

IOS 學習筆記 2015-04-09 0C-SQLite 資料存放區,iossqlite儲存圖片

1 項目匯入 libsqlite3.0.dylib 架構

2 在使用資料sqlite的標頭檔(.h)上匯入 #Impourt <sqlite3.h>

3 推薦自己本地電腦下個sqlite Manager 管理軟體類似的

下面上代碼

////  ViewController.m//  SQLiteDemo////  Created by wangtouwang on 15/4/9.//  Copyright (c) 2015年 wangtouwang. All rights reserved.//#import "ViewController.h"#import "WPUser.h"#define DBNAME @ "mysqlite.sqlite"@interface ViewController (){    sqlite3 *db;}@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        [self createSqlDBOrOpenDB];        [self createTable];    //    for (int index=0; index<30; index++) {//         [self insertIntoData];//    }    [self updateData:[self searchAllData]];        }#pragma mark 更新資料 -(void)updateData:(NSMutableArray *)array{    NSString *sql = @"update user set name=?,age=? where id=?";    sqlite3_stmt *stmt;    for (int index=0; index<array.count; index++) {        WPUser *user =  (WPUser *)array[index];        user.name=@"張建華";        user.age=31;        if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &stmt, NULL)==SQLITE_OK) {            sqlite3_bind_text(stmt, 1, [user.name UTF8String], -1, NULL);            sqlite3_bind_int(stmt, 2, user.age);            sqlite3_bind_int(stmt, 3, user.ID);            if (sqlite3_step(stmt)==SQLITE_DONE) {                NSLog(@"更新成功");            }        }    }}#pragma mark 讀取資料 -(NSMutableArray *)searchAllData{    NSMutableArray *array = [NSMutableArray array];    NSString *sql = @"select id,name,age from user";    sqlite3_stmt *stmt;    if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &stmt, NULL)==SQLITE_OK) {        while (sqlite3_step(stmt)==SQLITE_ROW) {            NSInteger ID =  sqlite3_column_int(stmt, 0);             char *name = (char*)sqlite3_column_text(stmt, 1);           NSString *uname = [[NSString alloc] initWithUTF8String:name];            NSInteger age = sqlite3_column_int(stmt, 2);            NSLog(@"ID=%lu NAME=%s AGE=%lu",ID,name,age);            WPUser *user = [WPUser initUserName:uname Age:age];            user.ID=ID;            [array addObject:user];        }    }     sqlite3_close(db);    return array;}#pragma mark 新增資料-(void)insertIntoData{    NSString *sql = @"insert into user(name,age) values(?,?)";    WPUser *user = [WPUser initUserName:@"JACK" Age:11];    sqlite3_stmt *stmt;    //插入資料前檢測文法是否正確    if ((sqlite3_prepare_v2(db, [sql UTF8String], -1, &stmt, NULL))==SQLITE_OK ) {        //綁定參數 參數2:為序號(從1開始),參數3:為字串值,參數4 為字串長度。sqlite3_bind_text的第五個參數為一個函數指標        sqlite3_bind_text(stmt, 1, [user.name UTF8String], -1, NULL);        sqlite3_bind_int(stmt, 2,user.age);        //真正執行插入 sqlite3_step        if (sqlite3_step(stmt)==SQLITE_DONE) {            NSLog(@"INSERT INTO SUCCESS");        }else{            NSLog(@"INSERT INTO ERROR");        }    }}#pragma mark 建立表 -(void)createTable{    NSString *sql = @"create table if not exists user (id integer primary key autoincrement,name text,age integer);";    char *errormsg;    //執行建立語句 sqlite3_exex 是函數 參數一:資料庫的控制代碼(db),參數二: 為sql語句,參數三 回調參數,是一個指向函數的指標,如果把callback前面的*改成^則就是一個block程式碼片段,                                //參數四 可以寫NULL,第五個參數為錯誤資訊    //在這裡建立需要先判斷表是否已存在    int result = sqlite3_exec(db, [sql UTF8String], NULL, NULL, &errormsg);    if (result==SQLITE_OK) {        NSLog(@"建立成功");    }else{        NSLog(@"建立失敗 願因是:%s",errormsg);    }}#pragma mark 建立資料庫執行個體或者開啟資料執行個體-(void)createSqlDBOrOpenDB{    //擷取 項目 Doucment檔案目錄位址    NSString  *doc =  [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];    NSLog(@"%@",doc);    //建立 SQLITE 檔案或者擷取該檔案路徑    NSString *DB_PATH = [doc stringByAppendingPathComponent:DBNAME];    NSLog(@"%@",DB_PATH);    //開啟或者建立DB執行個體 這裡用到C裡面的文法和指標    int result = sqlite3_open([DB_PATH UTF8String], &db);//sqlite3_open方法名 參數 const filename DB檔案路徑,第二個參數就是資料庫執行個體化對象 返回參數 int 類型    if(result!=SQLITE_OK){        sqlite3_close(db);//關閉執行個體化        NSLog(@"開啟資料哭執行個體化對象失敗");    }else{        NSLog(@"CREATE SUCCESS");    }}@end
////  WPUser.m//  SQLiteDemo////  Created by wangtouwang on 15/4/9.//  Copyright (c) 2015年 wangtouwang. All rights reserved.//#import "WPUser.h"@implementation WPUser-(instancetype)initUserName:(NSString *)name Age:(NSInteger)age{    if (self= [super init]) {        self.name = name;        self.age = age;    }    return self;}+(instancetype)initUserName:(NSString *)name Age:(NSInteger)age{    return [[WPUser alloc] initUserName:name Age:age];}@end

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.