hr = cocreateinstance(clsid_sqlserverce_3_0, 0, clsctx_inproc_server,
iid_idbinitialize, (void**)&pidbinitialize);
if (failed(hr))
dbprop[0].dwpropertyid = dbprop_init_datasource;
dbprop[0].dwoptions = dbpropoptions_required;
dbprop[0].vvalue.vt = vt_bstr;
dbprop[0].vvalue.bstrval = sysallocstring(l"//db.sdf"); //need oleaut32.lib
if (dbprop[0].vvalue.bstrval == null)
dbpropset[0].guidpropertyset = dbpropset_dbinit; //#define dbinitconstants
dbpropset[0].cproperties = sizeof(dbprop) / sizeof(dbprop[0]);
dbpropset[0].rgproperties = dbprop;
hr = pidbinitialize-> queryinte***ce(iid_idbproperties,(void**)&pidbproperties);
if (failed(hr))
hr = pidbproperties-> setproperties(sizeof(dbpropset)/sizeof(dbpropset[0]),dbpropset);
if (failed(hr))
hr = pidbinitialize-> initialize();
if (failed(hr))
hr = pidbproperties-> queryinte***ce(iid_idbcreatesession,(void**)&pidbcreatesession);
if (failed(hr))
hr = pidbcreatesession-> createsession(null,iid_iunknown,&piunknown); //need uuid.lib
if (failed(hr))
hr = piunknown-> queryinte***ce(iid_idbcreatecommand,(void**)&pidbcreatecommand);
if (failed(hr))
hr = pidbcreatecommand-> createcommand(null,iid_icommandtext,(iunknown **)&picommandtext);
if (failed(hr))
hr = picommandtext-> setcommandtext(dbguid_sql,l"select * from sninfo"); //執行查詢
3. 這下我們就可以在evc4裡面操作sqlite資料庫了:
//開啟資料庫
cppsqlite3db db;
//開啟或新建乙個資料庫
db.open(l"//ding.db
");//新建表
db.execdml(l"create table sninfo(id nchar(12), area nvarchar(6), info nvarchar(60),source nchar(6), target nchar(6))");
//查詢
cppsqlite3query q = db.execquery(l"select * from sninfo where area='廣州區'");
cstring strtemp;
while (!q.eof())
q.finalize();
db.close();
4.對sqlite的資料庫操作就介紹到這裡,我目前也就用了這麼多,更多的我也需要學習,在wince或mobile下用sqlite要注意一點的是,資料庫的路徑中不要含有中文字,否則會開啟失敗,如果非要用中文,那必須得轉成utf-8才行,sqlite內部是通過utf-8來讀取的。
三. 後記
對比了一下sqlce和sqlite在查詢50w記錄時的效能,都可以在2秒鐘之內完成,(一開始我沒建index,查了4分多鐘,暈),一定記得要建索引哦。否則查詢n慢。
文筆不好,水平有限,記錄的不是很清楚,寫得不對的地方還請大家指正,一起學習一起進步。
SQLite 資料庫安裝與建立資料庫
嵌入式關聯式資料庫 ubuntu sudo apt getinstall sqlite3 sqlite3 dev centos,orfedora yum install sqlite3 sqlite3 dev 使用下面的命令來檢查您的機器上是否已經安裝了 sqlite。sqlite3 exit 退出...
wince上資料庫 sqlce和sqlite
hr cocreateinstance clsid sqlserverce 3 0,0,clsctx inproc server,iid idbinitialize,void pidbinitialize if failed hr dbprop 0 dwpropertyid dbprop init ...
wince上資料庫 sqlce和sqlite
hr cocreateinstance clsid sqlserverce 3 0,0,clsctx inproc server,iid idbinitialize,void pidbinitialize if failed hr dbprop 0 dwpropertyid dbprop init ...