sqlite3 相關操作

2021-09-01 04:46:16 字數 2525 閱讀 2852

[size=small]

檔案儲存策略:

一般有三中方法:1,屬性列表,2,物件歸檔,3,iphone的嵌入式資料庫庫(sqlite3)

1,屬性列表

儲存檔案:

//獲取文件目錄,nsdocumentdirectory表示我們查詢documents目錄的路徑,nsuserdomainmask表示我們的搜尋範圍只能在我們的應用程式沙盒當中,

nsarray *path=nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);

//每個應用程式只有乙個路徑,所以說我們可以從陣列的0位置取得路徑

nsstring *documentdirectory=[path objectatindex:0];

//在獲得的路徑當中生成乙個thefile.txt檔案,filename將包含thefile.txt的完整路徑

nsmutablearray *array=[[nsmutablearray alloc] init];

[array addobject:@"data1"];

[array addobject:@"data2"];

[array addobject:@"data3"];

[array writetofile:documentdirectory atomically:yes];

如果想獲取臨時檔案的目錄可以使用下面的語句:

nsstring *temppath=nstemporarydirectory();

讀取檔案:

nsarray *paths=nssearchpathfordirectoriesindomains(nsdocumentdirectory,nsuserdomainmask,yes);

nsstring *documentdirectory=[path objectatindex:0];

if ([[nsfilemanager defaultmanager] fileexistsatpath: documentdirectory])

-(id)initwithcoder:(nscoder *)adecoder

return self;

}//實現nscopying

-(id) copywithzone:(nszone *)zone

對資料進行歸檔

//建立乙個nsmutabledata例項,用來包含編碼的資料

nsmutabledata *data=[nsmutabledata alloc] init];

//建立乙個歸檔物件,該歸檔物件將歸檔的資料儲存在data裡

nskeyedarchiver *archiver=[[nskeyedarchiver alloc] initforwritingwithmutabledata:data]

[archiver encodeobject:myobject forkey:@"keyvaluestring"];

//完成歸檔

[archiver finishencoding];

//將data裡面歸檔的資料寫入檔案 ,寫入檔案成功為success,失敗時為no;

bool success=[data writetofile:@"/path/to/archive" atomically:yes];

[archiver release];

[data release];

對資料物件取消歸檔

//從歸檔檔案建立乙個nsdata例項

nsdata *data=[[nsdata alloc] initwithcontentsoffile:path];

//建立乙個nskeyedunarchiver,對資料進行解碼

nsikeyedunarchiver *unarchiver=[[nskeyedunarchiver alloc] initforreadingwithdata:data];

//通過key值解碼物件

self.object=[unarchiver decodeobjectforkey:@"keyvaluestring"];

[unarchiver finishdecoding];

[unarchiver release];

[data release];

3.sqlite3

建立或開啟資料庫

sqlite3 *database;

//如果result等於常量sqlite_ok,則表示已經開啟(資料庫檔案路徑必須作為c字串處理)

int result=sqlite3_open("/path/database/file",&database);

char *errormsg;

const char *createsql-"create table if not exits people(id integer primary key autoincrement,field_data text)";

int result=sqlite3_exec(database,createsql,null,null,&errormsg);[/size]

sqlite3相關知識點

開啟 函式原型 int sqlite3 open const char filename,sqlite3 ppdb 函式功能 開啟乙個資料庫 若該資料庫檔案不存在,則自動建立。開啟或者建立資料庫的命令會被快取,直到這個資料庫真正被呼叫的時候才會被執行。輸入引數 filename,待開啟的資料庫檔名稱...

sqlite3相關知識點(3)

執行sql 函式原型 int sqlite3 get table sqlite3 pdb,const char sql,char presult,int rowcount,int columncount,char errmsg 函式功能 執行sql 語句,通過一維陣列返回結果 一般用於資料記錄查詢 ...

使用sqlite3 模組操作sqlite3資料庫

python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...