sqlite的增刪改查

來源:互聯網
上載者:User

標籤:pat   close   not   sse      更新   執行   com   ext   

SQLite是使用C語言寫的開源庫,實現了一個自包含的SQL關係型資料庫引擎,可以使用SQLite儲存操作大量的資料,作為關係型資料庫我們可以在一個資料庫中建立多張相關聯的表來解決大量資料重複的問題。而且SQLite庫也針對行動裝置上的使用進行了最佳化。 


因為 SQLite的介面使用 C寫的,而且 Objective-CC的超集所以可以直接在項目中使用 SQLite
寫了一個小demo,git:https://github.com/yangchengzh/PachagingSqlite
下面是關鍵的部分代碼 static sqlite3 *db;
- (sqlite3 *)openDB
{
   //  說明已經開啟資料庫
    if (db !=nil) {
       return db;
    }
    NSString*doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];
    NSString*fileName = [docstringByAppendingPathComponent:@"perple.sqlite"];
   
   //將OC字串轉換為c語言的字串
    const char*cfileName = fileName.UTF8String;
   //開啟資料庫檔案(如果資料庫檔案不存在,該函數就會自動建立資料庫檔案)
    int result =sqlite3_open(cfileName, &db);
    if (result== SQLITE_OK) {
       NSLog(@"資料庫已開啟");
    } else{
       NSLog(@"資料庫開啟失敗");
    }
    returndb;
}

- (void)closeDB
{
    int result =sqlite3_close(db);
    if (result== SQLITE_OK) {
       NSLog(@"資料庫已關閉");
       db = nil;
    } else{
       NSLog(@"資料庫關閉失敗");
    }
}

- (void)creatTable
{
    db = [selfopenDB];
    NSString*sql = @"create table IF NOT EXISTS perpleTable(number integerprimary key not NULL, name text not NULL, gender text not NULL, ageinteger not NULL)";
   
    int result =sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"建立表成功");
    } else{
       NSLog(@"建立表失敗");
    }
    [selfcloseDB];
}

- (void)insertWithModel:(PersonModel *)model
{
    db = [selfopenDB];
    NSString*sql = [NSString stringWithFormat:@"insert into perpleTable(number,name, gender, age) values(‘%ld‘, ‘%@‘, ‘%@‘, ‘%ld‘)", model.number,model.name, model.gender, model.age];
    int result =sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"添加成功");
    } else{
       NSLog(@"添加失敗");
    }
    [selfcloseDB];
}

- (void)delateWithAge:(NSInteger)age
{
    db = [selfopenDB];
    NSString*sql = [NSString stringWithFormat:@"delete from perpleTable whereage = ‘%ld‘", age];
    int result =sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"刪除成功");
    } else{
       NSLog(@"刪除表失敗");
    }
    [selfcloseDB];
}

- (void)delateWithName:(NSString *)name
{
    db = [selfopenDB];
    NSString*sql = [NSString stringWithFormat:@"delete from perpleTable wherename = ‘%@‘", name];
    int result =sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"刪除成功");
    } else{
       NSLog(@"刪除表失敗");
    }
    [selfcloseDB];
}

- (void)updateWithName:(NSString *)name byAge:(NSInteger)age
{
    db = [selfopenDB];
    NSString*sql = [NSString stringWithFormat:@"update perpleTable set name =‘%@‘ where age = ‘%ld‘", name, age];
    int result =sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"更新資料成功");
    } else{
       NSLog(@"更新資料失敗");
    }
    [selfcloseDB];
}

- (void)selertAll
{
   //1.開啟資料庫
    db = [selfopenDB];
   //2.寫sql語句
    NSString*sql = @"select * from perpleTable";
   //3.建立跟隨指標
    sqlite3_stmt*stmt = nil;
   //4.執行語句
    int result =sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);
   //5.判斷語句是否正確
    if (result== SQLITE_OK) {
       NSLog(@"查詢成功");
       //6.執行查詢
       while (sqlite3_step(stmt) == SQLITE_ROW) {
           //7.滿足條件 讀取資料
           int number = sqlite3_column_int(stmt, 0);
           const unsigned char *name = sqlite3_column_text(stmt, 1);
           const unsigned char *gender = sqlite3_column_text(stmt, 2);
           int age = sqlite3_column_int(stmt, 3);
           NSLog(@"name = %s, number = %d, gender = %s, age = %d", name,number, gender, age);
       }
       
    } else{
       NSLog(@"查詢失敗");
    }
   //8.釋放指標
   sqlite3_finalize(stmt);
   //9.關閉資料庫
    [selfcloseDB];
}

- (void)selertWithAge:(NSInteger)age
{
    db = [selfopenDB];
    NSString*sql = [NSString stringWithFormat:@"select * from perpleTable whereage = %ld", age];
    sqlite3_stmt*stmt = nil;
    int result =sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);
    if (result== SQLITE_OK) {
       NSLog(@"查詢成功");
       while (sqlite3_step(stmt) == SQLITE_ROW) {
           const unsigned char *name = sqlite3_column_text(stmt, 1);
           const unsigned char *gender = sqlite3_column_text(stmt, 2);
           int number = sqlite3_column_int(stmt, 0);
           int age = sqlite3_column_int(stmt, 3);
           NSLog(@"name = %s, number = %d, gender = %s, age = %d", name,number, gender, age);
       }
       
    } else{
       NSLog(@"查詢失敗");
    }
   sqlite3_finalize(stmt);
    [selfcloseDB];
}

sqlite的增刪改查

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.