偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

  1. sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);    
  2.  
  3. /由于mmmm.rar是一個(gè)二進(jìn)制文件,所以要在使用insert語(yǔ)句時(shí)先用?號(hào)代替    
  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.       //計(jì)算文件的大小    
  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語(yǔ)句中,替換“?”部分    
  21.     sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);    
  22.     //執(zhí)行綁定之后的SQL語(yǔ)句    
  23.  sqlite3_step(stat);  

這時(shí)數(shù)據(jù)庫(kù)當(dāng)中已經(jīng)有了一條包含BLOB字段的數(shù)據(jù)。接下來(lái)我們要讀取這條數(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ù)的長(zhǎng)度    
  7.   int size = sqlite3_column_bytes(stat, 1);    
  8.  //拷貝該字段    
  9.  sprintf(buffer2, "%s", test);  

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

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

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

2011-07-07 16:42:38

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

2020-09-24 16:05:44

C語(yǔ)言sqlite3函數(shù)

2010-04-20 10:12:42

OraclePL

2011-07-26 18:11:56

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

2021-04-12 16:24:19

Hedy編程語(yǔ)言軟件開(kāi)發(fā)

2011-06-03 10:06:57

MongoDB

2011-07-13 14:02:42

OracleExcel

2010-05-21 15:33:54

MySQL text

2018-08-29 08:19:43

iPhone求救手機(jī)

2009-06-22 11:52:00

javascriptxml

2010-04-23 14:32:01

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

2012-02-01 09:33:36

百度地圖API

2011-08-30 14:15:34

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

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2021-12-31 10:32:26

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

2011-08-03 17:08:43

iPhone Sqlite 時(shí)間

2011-05-17 10:43:18

oracleblob字段

2011-08-22 14:12:48

iPhone開(kāi)發(fā)NSTableView

2010-04-29 10:56:46

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

2011-08-02 16:16:08

iPhone開(kāi)發(fā) SQLite 數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

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