新聞中心
此文章主要講述的是SPL升級到3.2全面支持MySQL數(shù)據(jù)庫的實際應用與具體操作,如果你是MySQL數(shù)據(jù)庫方面的新手,對MySQL數(shù)據(jù)庫的相關實際應用不是很了解的話,以下的文章會給你提供更全面的知識。

SPL從上次的3.1.0.5開始,經(jīng)過了一段時間,積累了一些修改并進行了MySQL數(shù)據(jù)庫的支持,現(xiàn)在發(fā)布SPL版本為3.2.0.4,Dll下載地址:這里 。只需要在項目中,把原來的Dll覆蓋即可,如果還沒下載過SPL早期版本的朋友,本次SPL自上次發(fā)布的3.1.0.5以后進行的更新有:
1、支持MS SQL SERVER中的Bit型數(shù)據(jù)類型
映射到ClassMap中的類型為boolean,如:
對應的實體類類型為bool型,如:
- private bool m_IsOver;
- public bool IsOver
- {
- get
- {
- return this.m_IsOver;
- }
- set
- {
- this.m_IsOver = value;
- }
- }
在查詢時可以通過Condition進行比較判斷了:
- Codition c=....
- c.AddEqualTo("IsOver",false);
這會最終生成 IsOver='0'的查詢條件
2、提供了對數(shù)據(jù)源的提供者類型的判斷,這將方便區(qū)分不同的MySQL數(shù)據(jù)庫提供者手動組裝不同的SQL語句
用Setting.Instance().GetDatabaseVendor(dbName)根據(jù)dbName數(shù)據(jù)源取得數(shù)據(jù)源提供者,然后與DatabaseVendor枚舉型比較
如Access的日期比較與Sql Server的不一致:一個采用#號,一個采用'號
- if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsAccess)
- {
- builder.Append(" and SpecialPriceD2.FromDate<=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");
- builder.Append(" and SpecialPriceD2.ToDate>=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");
- }
- if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsSqlServer)
- {
- builder.Append(" and SpecialPriceD2.FromDate<='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");
- builder.Append(" and SpecialPriceD2.ToDate>='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");
- }
這個功能將為系統(tǒng)對多種MySQL數(shù)據(jù)庫的支持***的靈活性,雖然SPL本身的“實體”與“標準”都可以區(qū)分不同的數(shù)據(jù)源提供者,但在需要手寫SQL的地方,也需要根據(jù)不同的數(shù)據(jù)源提供者提供不同的語句執(zhí)行
3、修訂了對所有保留字的兼容性
目前對所有的SPL中的操作,都加了定界符,ORACLE采用“"”號,MS的采用“[]”號,MySql的采用“`”號,所有測試都通過了
4、在Condition里添加了對Null值的查詢功能
此方式只針對AddEqualTo()和AddNotEqualTo()有效:
- c.AddEqualTo("字段名",System.DBNull.Value);
- c.AddNotEqualTo("字段名",System.DBNull.Value);
5、增加了對MySql數(shù)據(jù)庫的支持
SPL對MySql的訪問連接采用的是MySql提供的專用.NET connector,此驅(qū)動應該說是目前.NET連接MySql的***選擇,在使用SPL訪問MySql時,只需要安裝一下此驅(qū)動即可,下載與介紹請看
使用時只需要配置DatabaseMap時類型設為“MySql”即可,如下:
只需這里配置后,SPL在具體應用中與其他的完全一樣,測試情況:
實體測試--->通過
RetrieveCriteira、UpdateCriteria、DeleteCriteria測試--->通過
Transaction測試--->通過
自動增長主鍵測試--->通過
TOP功能測試--->通過
6、對DateTime的Null值進行了處理 (3.2.0.1開始支持)
如果要對DateTime類型的字段賦于Null值,只需要使用DateTime.MinValue即可:
aEntity.CreateDate=DateTime.MinValue;
在SPL內(nèi)部會判斷如果DateTime.MinValue的話,自動保存到MySQL數(shù)據(jù)庫為System.DBNull.Value,這就解決了不能給 DateTime類型直接賦于System.DBNull.Value的問題。
7、修訂了UpdateCriteria對屬性名與字段名不一致時導致的錯誤(3.2.0.2開始修訂)
原來在UpdateCriteira時沒有對屬性進行轉(zhuǎn)化為字段名,導致在屬性名與字段名不一致的情況下會找不到字段。
(非常感謝iamsunrise提供的建議,請下載了SPL3.2的朋友重新下載一下)
(感謝子揚報出的BUG)
8、本3.2.0.4已經(jīng)修復了DataBaseType的MySql類型了。
分享名稱:支持MySQL數(shù)據(jù)庫,SPL升級到3.2
當前鏈接:http://m.5511xx.com/article/dpgopco.html


咨詢
建站咨詢
