SQLite中如何用api操作blob型別的字段

2021-06-08 20:20:27 字數 1082 閱讀 4883

在實際的程式設計開發當中我們經常要處理一些大容量二進位制資料的儲存,如或者**等等。對於這些二進位制資料(blob欄位)我們不能像處理普通的文字那樣簡單的插入或者查詢,為此sqlite提供了一組函式來處理這種blob欄位型別。下面的**演示了如何使用這些api函式。

首先我們要建立乙個資料庫:

sqlite3_exec(db, "create table list (fliename varchar(128) unique, fzip blob);", 0, 0, &zerrmsg);

//由於mmmm.rar是乙個二進位制檔案,所以要在使用insert語句時先用?號代替

sqlite3_prepare(db, "insert into list values ('mmmm.rar',?);", -1, &stat, 0);

file *fp;

long filesize = 0;

char * ffile;

fp = fopen("mmmm.rar", "rb");

if(fp != null)

//將檔案資料繫結到insert語句中,替換「?」部分

sqlite3_bind_blob(stat, 1, ffile, filesize, null);

//執行繫結之後的sql語句

sqlite3_step(stat);

這時資料庫當中已經有了一條包含blob欄位的資料。接下來我們要讀取這條資料:

//選取該條資料

sqlite3_prepare(db, "select * from list;", -1, &stat, 0);

sqlite3_step(stat);

//得到紀錄中的blob欄位

const

void * test = sqlite3_column_blob(stat, 1);

//得到欄位中資料的長度

int size = sqlite3_column_bytes(stat, 1);

//拷貝該欄位

sprintf(buffer2, "%s", test);

此時可以將buffer2寫入到檔案當中,至此blob資料處理完畢。

SQLite中如何用api操作blob型別的字段

sqlite中如何用api操作blob型別的字段 在實際的程式設計開發當中我們經常要處理一些大容量二進位制資料的儲存,如或者 等等。對於這些二進位制資料 blob欄位 我們不能像處理普通的文字那樣簡單的插入或者查詢,為此sqlite提供了一組函式來處理這種blob欄位型別。下面的 演示了如何使用這些...

如何用API管理服務

如何用 api管理服務 鄭恆獲取服務的狀態 以遠端登錄檔操作服務以例 sc handle hsc openscmanager null,null,sc manager query lock status if hsc closeservicehandle hservice closeserviceh...

如何用Python操作Redis

想要用python操作redis,就要掌握虛擬環境redis安裝以及開啟redis伺服器的命令.具體操作如下 伺服器端的命令為redis server 可以使用help檢視幫助文件 redis server help 推薦使用服務的方式管理redis服務 啟動 sudo service redis ...