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"); //執行查詢
if (failed(hr))
hr = picommandtext-> execute(null,iid_null,null,null,null);
if (failed(hr))
記得網上有採用ado的方式操作sqlce,但聽聞ms不再更新,而採用oledb方式,只是比較麻煩一點了,這樣也有助於我們了解一下sqlce的一些介面。
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慢。
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 ...
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資料同步篇
sql server ce與sql server之間通過rda合併複製進行資料同步。remote data access rda 主要由三部分組成 sql server ce database engine sql server ce client agent和sql server ce datab...