設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

tag 標(biāo)簽: Freebasic的集合類

相關(guān)帖子

版塊 作者 回復(fù)/查看 最后發(fā)表

沒有相關(guān)內(nèi)容

相關(guān)日志

分享 FreeBasic的集合類與數(shù)據(jù)庫對象關(guān)系映射
ganlinlao 2015-5-22 13:17
數(shù)據(jù)庫對象關(guān)系映射是目前非;馃岬臄(shù)據(jù)庫訪問技術(shù)。這又是一門“偉大" 的技術(shù),實在有點(diǎn)博大精深了。有興趣的話,可以自行搜索一下。 Mdtypes只是提供了一個Freebasic版的數(shù)據(jù)庫對象關(guān)系映射的基本雛形。但它簡單實用,雖然它無法象Entity Frame,或java的ORM那么牛逼哄哄,不過你也不用深陷偉大技術(shù)的偉大泥潭的苦惱。 對于經(jīng)常使用vba的人來說,如果不使用recordset,那么數(shù)據(jù)庫離你大概有十萬八千里遠(yuǎn),因為如果沒有recordset,那么很多人根本不知道如何使用數(shù)據(jù)庫。接下來的數(shù)據(jù)庫對象關(guān)系映射,可能是另一個全新的方式(其實是新瓶裝舊酒),這個沖擊有點(diǎn)大。 接下來是我的粗淺的認(rèn)識,可能會有很多錯誤,甚至理解偏差了,以后隨著越來越深入的了解,可以慢慢改正: 1、數(shù)據(jù)庫對象的映射: 一個數(shù)據(jù)庫就是一個對象。數(shù)據(jù)庫中有很多表,所有的表構(gòu)成tables。tables就是一個集合。也有很多存儲過程、很多視圖、關(guān)系,這些都會構(gòu)成集合。 一個表本身包含很多行記錄。所有的行記錄也是一個集合。一行記錄(有很多列,每個都有列名),一行記錄就構(gòu)成了一個字典(或map), 其中列名就是key,列值就是value,表現(xiàn)為key=value這樣的形式。所以一張表,實際上是一個List表+map的復(fù)合體(所謂的二維表)。 一張表中有很多列,所有的列本身也是一個集合,每一個列(字段名)有很多屬性,如數(shù)據(jù)類型等,一個字段名的所有屬性描述也構(gòu)成了一個Map。 list和map都是對象,所以數(shù)據(jù)庫里的對象,就這樣映射到編程語言中的collection和map對象來。 2、數(shù)據(jù)庫數(shù)據(jù)類型的映射:每一種數(shù)據(jù)庫都有自己的數(shù)據(jù)類型。而每一種語言也有自己的數(shù)據(jù)類型,所以需要進(jìn)行映射。 3、表與表之間關(guān)系的映射:這是一個非常蛋疼的話題。因為mdTypes中的持久化,還在發(fā)展中,所以這里就不扯。 由于目前mdTypes的持久化,特別是數(shù)據(jù)庫持久化還是基本雛形,所以它的優(yōu)缺點(diǎn)很明顯,而且大部分的缺點(diǎn)是ORM本身就有的 缺點(diǎn): 1、數(shù)據(jù)類型的對應(yīng):FB的數(shù)據(jù)類型如何與數(shù)據(jù)庫的數(shù)據(jù)類型進(jìn)行快速簡便地映射,這本身是一個問題,雖然絕大部分的數(shù)據(jù)類型可以進(jìn)行一一對應(yīng),但它始終是一個問題 2、colleciton必須有兩個構(gòu)造函數(shù),一個是空的constructor,一個是帶有參數(shù)的constructor。而FB的構(gòu)造、解構(gòu)函數(shù)是無法繼承。也就是說這代碼只能不厭其煩 地進(jìn)行復(fù)制。同樣的兩個operator cast()和=也是無法避免。 3、目前還無法避免必須對數(shù)據(jù)庫表設(shè)計的深入了解。雖然對于小項目,這沒什么,但始終是一個大問題。 4、每次查詢都得定義一次map的結(jié)構(gòu),并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,這個工作量不小。(或許會有更簡便的方法?)
個人分類: FreeBasic|2448 次閱讀|0 個評論

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 07:48 , Processed in 0.054898 second(s), 13 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部