資料庫程式設計筆錄之四

2021-03-31 08:56:30 字數 1818 閱讀 2251

本篇想說一下如何獲取記錄集中各種型別的數值。比如資料庫中定義的是varchar型別等,我們獲取資料時該怎麼寫呢?這裡我提供一些巨集定義,大家只要在stdafx.h或者其它需要使用這些巨集的地方插入這些語句,就可以很輕鬆的獲取資料庫中的資料了。與資料庫是何種型別沒有關係。

#define createinstance(sp,riid)

這是建立資料庫連線,***mand和記錄集物件使用的。可以這樣呼叫:

createinstance(m_piconnection,connection);

#define rsitem(rs,x) rs->fields->item[_variant_t(x)]->value

#define rsitem_bstr(rs,x) (rsitem(rs,x).vt == vt_null)?cstring(""):rsitem(rs,x).bstrval

#define rsitem_double(rs,x) (rsitem(rs,x).vt == vt_null)?0:rsitem(rs,x).dblval

#define rsitem_long(rs,x) (rsitem(rs,x).vt == vt_null)?0:rsitem(rs,x).lval

#define rsitem_byte(rs,x) (rsitem(rs,x).vt == vt_null)?0:rsitem(rs,x).bval

#define rsitem_date(rs,x) (rsitem(rs,x).vt == vt_null)?0:rsitem(rs,x).date

#define rsitem_bool(rs,x) (rsitem(rs,x).vt == vt_null)?0:rsitem(rs,x).boolval

#define rsitem_decimal(rs,x) (rsitem(rs,x).vt == vt_null)?0.0:rsitem(rs,x)

以上巨集就是獲取資料庫中字串,double型,整數,日期,布林和numeric等型別的資料。

呼叫例程如下:

sshipinfo.**msiid        =        rsitem_bstr(pirecordset,"mmsi_id");

sshipinfo.scallsign        =        rsitem_bstr(pirecordset,"call_sign");

sshipinfo.sshipname        =        rsitem_bstr(pirecordset,"name");

sshipinfo.fcog                =        rsitem_decimal(pirecordset,"cog");

sshipinfo.fsog                 =        rsitem_decimal(pirecordset,"sog");

sshipinfo.wbreadth         =        rsitem_long(pirecordset,"width");

sshipinfo.wlength          =        rsitem_long(pirecordset,"length");

sshipinfo.latlong.dlatitude                = rsitem_decimal(pirecordset,"lat");

sshipinfo.latlong.dlongitude        = rsitem_decimal(pirecordset,"long");

sshipinfo.repttime = rsitem_date(pirecordset,"rept_time");

由於資料庫呼叫並沒有圖例,所以沒有可以貼出。

資料庫程式設計筆錄之四

本篇想說一下如何獲取記錄集中各種型別的數值。比如資料庫中定義的是varchar型別等,我們獲取資料時該怎麼寫呢?這裡我提供一些巨集定義,大家只要在stdafx.h或者其它需要使用這些巨集的地方插入這些語句,就可以很輕鬆的獲取資料庫中的資料了。與資料庫是何種型別沒有關係。define createin...

資料庫程式設計筆錄之一

最近使用ado sqlserver程式設計。作為一個資料庫程式設計的新手,在使用過程中碰到一些現象和問題。有的解決了,有的還沒有解決。在此以筆錄的方式和大家交流一下。import c program files mon files system ado msado15.dll no namespac...

資料庫程式設計筆錄之二

搞定ado引入後,我嘗試用command方式呼叫儲存過程。儲存過程主要是根據輸入的引數,執行一個複雜的查詢語句,因此返回的是個記錄集,同時儲存過程本身有個返回引數。程式如下 問題來了,不管是用raw execute還是execute返回記錄集,都不能正確的獲取返回引數 ret的值,始終是vt emp...

資料庫程式設計筆錄之二

搞定ado引入後,我嘗試用command方式呼叫儲存過程。儲存過程主要是根據輸入的引數,執行一個複雜的查詢語句,因此返回的是個記錄集,同時儲存過程本身有個返回引數。程式如下 問題來了,不管是用raw execute還是execute返回記錄集,都不能正確的獲取返回引數 ret的值,始終是vt emp...

資料庫程式設計筆錄之二

搞定ado引入後,我嘗試用command方式呼叫儲存過程。儲存過程主要是根據輸入的引數,執行一個複雜的查詢語句,因此返回的是個記錄集,同時儲存過程本身有個返回引數。程式如下 問題來了,不管是用raw execute還是execute返回記錄集,都不能正確的獲取返回引數 ret的值,始終是vt emp...