Ios開發之sqlite

nataliemarsh894 8年前發布 | 21K 次閱讀 iOS開發 SQLite 移動開發

來自: http://www.cnblogs.com/jerehedu/p/5181431.html

Sqlite是ios數據存儲的一個重要手段,今天我們就一塊來看一下,怎樣使用sqlite將數據存儲到沙盒中去。

第一步:導入一個框架libsqlite3.0.dylib

選中TARGETS在General中的Linked Frameworks and Libraries選項中點擊‘+’添加

第二步:代碼部分

1.找到沙盒中的路徑

NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [path objectAtIndex:0];
 NSString *dbPath = [documentPath stringByAppendingPathComponent:@"sqlite.db"];

2.創建sqlite對象,并執行打開操作

sqlite3 *db;
    //打開數據庫
int res = sqlite3_open(dbPath.UTF8String, &db);

3.創建表

NSString *sql = @"create table if not exists 'student' ('id' integer primary key autoincrement,'studentname' varchar)";
int sqlRes = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
 if (sqlRes == SQLITE_OK) {
     NSLog(@"create table ok");
 }

4.向表中插入數據

//增 NSString *sql1 = @"insert into student (studentname) values ('小帳')";
int sql1Res = sqlite3_exec(db, sql1.UTF8String, NULL, NULL, NULL);
if (sql1Res == SQLITE_OK) {
    NSLog(@"insert ok");
}

5.從表中刪除數據

NSString *deletesql  = @"delete from student where id = 3";
int deleres = sqlite3_exec(db, deletesql.UTF8String, NULL, NULL, NULL);
if (deleres == SQLITE_OK) {
     NSLog(@"delete is ok");
}

6.修改表中的數據

//修改
NSString *updateSql = @"update student set studentname = 'wangling' where id = 4";
int updateres = sqlite3_exec(db, updateSql.UTF8String, NULL, NULL, NULL);
if (updateres == SQLITE_OK) {
      NSLog(@"update is ok");
}

7.查詢數據

查詢數據和,增刪改都有所不同,我們需要首先創建sqlite_stmt對象,用來存放我們查詢的數據流(二進制),然后使用sqlite3_prepare_v2函數準備,通過sqlite3_bind_添加查詢參數最后獲取數據,最后關閉sqlite_stmt對象。

//查
        sqlite3_stmt *stmt;
        NSString *selectSql = @"select * from student where id = ?";

        if (sqlite3_prepare_v2(db, selectSql.UTF8String, -1, &stmt, nil) == SQLITE_OK) {
            sqlite3_bind_int(stmt, 1, 4);
            while (sqlite3_step(stmt) == SQLITE_ROW) {
                int identity = sqlite3_column_int(stmt, 0);
                NSLog(@"%d",identity);
                char * name= (char *)sqlite3_column_text(stmt, 1);
                NSLog(@"%@",[NSString stringWithUTF8String:name]);
            }
            if (stmt) {
                sqlite3_finalize(stmt);
}

8.關閉數據庫sqlite對象

if (db) {
        sqlite3_close(db);
    }

作者:杰瑞教育

出處: http://www.cnblogs.com/jerehedu/

版權聲明:本文版權歸 煙 臺 杰瑞教育

技有限公司 和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

技術咨詢:

 本文由用戶 nataliemarsh894 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!