資料庫操作(SQLite)

來源:互聯網
上載者:User

標籤:android   style   blog   color   使用   os   io   檔案   

SQLite 是一個輕量級的關聯式資料庫。SQLite最初的設計目標是用於嵌入式系統,它佔用資源非常少,在嵌入式裝置中,只需要幾百K的記憶體就夠了,目前應用於Android、iOS、Windows Phone等智能手機。iOS 使用時SQLite,只需要加入 libsqlite3.dylib 依賴以及引入 sqlite3.h 標頭檔即可。

資料庫操作包含開啟資料庫、建立表,表的增、刪、改、查。下面代碼給出了資料庫操作.

建立並開啟資料庫:

//擷取資料庫路徑      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);      NSString *documents = [paths objectAtIndex:0];      NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];            //如果資料庫存在,則用sqlite3_open直接開啟(不要擔心,如果資料庫不存在sqlite3_open會自動建立)      //開啟資料庫,這裡的[path UTF8String]是將NSString轉換為C字串,因為SQLite3是採用可移植的C(而不是      //Objective-C)編寫的,它不知道什麼是NSString.      if (sqlite3_open([database_path UTF8String], &db) == SQLITE_OK) {          return YES;      }else{          return NO;          NSLog(@"資料庫開啟失敗");          sqlite3_close(db);      }  

 iOS中沒有提供建立資料庫的命令,當使用sqlite3_open時,如果資料庫檔案不存在會自行建立資料庫,如果存在會開啟資料庫。開啟資料庫後就可以建立表並動作表內容了,iOS中的sqlite3使用sqlite3_exec來建立表、插入表內容、修改表內容、刪除表內容等操作,使用sqlite3_prepare_v2來查詢表。

-(void)execSql:(NSString *)sql  {          if ([self openDB]) {          char *err;          if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {              NSLog(@"資料庫操作資料失敗!");          }else{              NSLog(@"%@",sql);          }          sqlite3_close(db);      }      }  

  建立表:

NSString *sqlCreateTable =  [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS ‘%@‘ (‘%@‘ INTEGER PRIMARY KEY AUTOINCREMENT, ‘%@‘ TEXT, ‘%@‘ INTEGER, ‘%@‘ TEXT)",TABLENAME,ID,NAME,AGE,ADDRESS];      [self execSql:sqlCreateTable];  

 插入資料:

-(void) insertData{      NSString *insertSql1= [NSString stringWithFormat:                        @"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘, ‘%@‘, ‘%@‘)",                        TABLENAME, NAME, AGE, ADDRESS, @"張三", @"13", @"濟南"];      [self execSql:insertSql1];            NSString *insertSql2 = [NSString stringWithFormat:                        @"INSERT INTO ‘%@‘ (‘%@‘, ‘%@‘, ‘%@‘) VALUES (‘%@‘, ‘%@‘, ‘%@‘)",                        TABLENAME, NAME, AGE, ADDRESS, @"李四", @"12", @"濟南"];      [self execSql:insertSql2];        }  
// 更新資料

-(void) updateData{ NSString *updateSql = [NSString stringWithFormat: @"UPDATE ‘%@‘ SET ‘%@‘ = ‘%@‘ WHERE ‘%@‘ = ‘%@‘", TABLENAME, AGE, @"15" ,AGE, @"13"]; [self execSql:updateSql]; }

 刪除表內容:

-(void) deleteData{      NSString *sdeleteSql = [NSString stringWithFormat:                        @"delete from %@ where %@ = ‘%@‘",                        TABLENAME, NAME, @"張三"];      [self execSql:sdeleteSql];  }  

查詢:

-(void) selectData{        [self openDB];      NSString *sqlQuery = [NSString stringWithFormat:                        @"SELECT * FROM %@",TABLENAME];      sqlite3_stmt * statement;            if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {                    //查詢結果集中一條一條的遍曆所有的記錄,這裡的數字對應的是列值,注意這裡的列值            while (sqlite3_step(statement) == SQLITE_ROW) {              char *name = (char*)sqlite3_column_text(statement, 1);              NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];                            int age = sqlite3_column_int(statement, 2);                            char *address = (char*)sqlite3_column_text(statement, 3);              NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];                            NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);          }      }else{          NSLog(@"select error:%@",sqlQuery);        }      sqlite3_close(db);  }  

 

相關文章

聯繫我們

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