自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone編程:SQLite中如何用API操作BLOB類型字段

移動開發(fā) iOS
對于這些二進(jìn)制數(shù)據(jù)(blob字段)我們不能像處理普通的文本那樣簡單的插入或者查詢,為此SQLite提供了一組函數(shù)來處理這種BLOB字段類型。

iPhone編程:SQLite中如何用API操作BLOB類型字段是本文要介紹的內(nèi)容,在實際的編程開發(fā)當(dāng)中我們經(jīng)常要處理一些大容量二進(jìn)制數(shù)據(jù)的存儲,如圖片或者音樂等等。對于這些二進(jìn)制數(shù)據(jù)(blob字段)我們不能像處理普通的文本那樣簡單的插入或者查詢,為此SQLite提供了一組函數(shù)來處理這種BLOB字段類型。

下面的代碼演示了如何使用這些API函數(shù)。

首先我們要建立一個數(shù)據(jù)庫:

  1. sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);    
  2.  
  3. /由于mmmm.rar是一個二進(jìn)制文件,所以要在使用insert語句時先用?號代替    
  4.     sqlite3_prepare(db, "insert into list values ('mmmm.rar',?);", -1, &stat, 0);    
  5.     FILE *fp;    
  6.   long filesize = 0;    
  7.   char * ffile;    
  8.    fp = fopen("mmmm.rar", "rb");    
  9.    if(fp != NULL)    
  10.   {    
  11.       //計算文件的大小    
  12.        fseek(fp, 0, SEEK_END);    
  13.       filesize = ftell(fp);    
  14.       fseek(fp, 0, SEEK_SET);    
  15.         //讀取文件    
  16.        ffile = new char[filesize+1];    
  17.        size_t sz = fread(ffile, sizeof(char), filesize+1, fp);    
  18.       fclose(fp);    
  19.     }    
  20.     //將文件數(shù)據(jù)綁定到insert語句中,替換“?”部分    
  21.     sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);    
  22.     //執(zhí)行綁定之后的SQL語句    
  23.  sqlite3_step(stat);  

這時數(shù)據(jù)庫當(dāng)中已經(jīng)有了一條包含BLOB字段的數(shù)據(jù)。接下來我們要讀取這條數(shù)據(jù):

  1. //選取該條數(shù)據(jù)    
  2.   sqlite3_prepare(db, "select * from list;", -1, &stat, 0);    
  3.   sqlite3_step(stat);    
  4.  //得到紀(jì)錄中的BLOB字段    
  5.   const void * test = sqlite3_column_blob(stat, 1);    
  6.  //得到字段中數(shù)據(jù)的長度    
  7.   int size = sqlite3_column_bytes(stat, 1);    
  8.  //拷貝該字段    
  9.  sprintf(buffer2, "%s", test);  

此時可以將buffer2寫入到文件當(dāng)中,至此BLOB數(shù)據(jù)處理完畢。

小結(jié):iPhone編程:SQLite中如何用API操作BLOB類型字段的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí),能對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-07 16:42:38

iPhone Sqlite3 數(shù)據(jù)庫

2020-09-24 16:05:44

C語言sqlite3函數(shù)

2010-04-20 10:12:42

OraclePL

2011-07-26 18:11:56

iPhone Sqlite 數(shù)據(jù)庫

2010-05-21 15:33:54

MySQL text

2021-04-12 16:24:19

Hedy編程語言軟件開發(fā)

2011-06-03 10:06:57

MongoDB

2011-07-13 14:02:42

OracleExcel

2010-04-23 14:32:01

Oracle數(shù)據(jù)庫

2009-06-22 11:52:00

javascriptxml

2018-08-29 08:19:43

iPhone求救手機(jī)

2011-08-30 14:15:34

QTSQLite數(shù)據(jù)庫

2012-02-01 09:33:36

百度地圖API

2021-12-31 10:32:26

MySQL數(shù)據(jù)類型

2010-04-29 10:56:46

Oracle數(shù)據(jù)庫

2011-05-17 10:43:18

oracleblob字段

2011-08-03 17:08:43

iPhone Sqlite 時間

2011-08-02 16:16:08

iPhone開發(fā) SQLite 數(shù)據(jù)庫

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2023-08-09 09:00:00

樹莓派物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號