SPL升级到3.2了,完全透明支持MySQL数据库了(更新了一下)!

转载 2006年06月09日 17:47:00

    SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进行了MySQL数据库的支持,现在发布SPL版本为3.2.0.4,Dll下载地址:这里 。只需要在项目中,把原来的Dll覆盖即可,如果还没下载过SPL早期版本的朋友,请先浏览:http://tintown.cnblogs.com/archive/2005/04/11/135582.html 。
   
   本次SPL自上次发布的3.1.0.5以后进行的更新有:
1、支持MS SQL SERVER中的Bit型数据类型
   映射到ClassMap中的类型为boolean,如:   

<attribute name="IsOver" column="IsOver" type="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、提供了对数据源的提供者类型的判断,这将方便区分不同的数据库提供者手动组装不同的SQL语句
   用Setting.Instance().GetDatabaseVendor(dbName)根据dbName数据源取得数据源提供者,然后与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()+"'");
}


    这个功能将为系统对多种数据库的支持最佳的灵活性,虽然SPL本身的“实体”与“标准”都可以区分不同的数据源提供者,但在需要手写SQL的地方,也需要根据不同的数据源提供者提供不同的语句执行

3、修订了对所有保留字的兼容性
   目前对所有的SPL中的操作,都加了定界符,ORACLE采用“"”号,MS的采用“[]”号,MySql的采用“`”号,所有测试都通过了

4、在Condition里添加了对Null值的查询功能
此方式只针对AddEqualTo()和AddNotEqualTo()有效:

c.AddEqualTo("字段名",System.DBNull.Value);
c.AddNotEqualTo(
"字段名",System.DBNull.Value);

5、增加了对MySql数据库的支持
  SPL对MySql的访问连接采用的是MySql提供的专用.NET connector,此驱动应该说是目前.NET连接MySql的最佳选择,在使用SPL访问MySql时,只需要安装一下此驱动即可,下载与介绍请看官方地址:
http://dev.mysql.com/downloads/connector/net/1.0.html
 
   使用时只需要配置DatabaseMap时类型设为“MySql”即可,如下:

<database name="MySqlDB" type="MySql"> 
    
<parameter name="User Id" value="root"/>
    
<parameter name="Data Source" value="localhost"/>
    
<parameter name="Database" value="mysql"/>
    
<parameter name="password" value=""/>
    
<classMapFile path="ClassMap.xml" />
</database>

  只需这里配置后,SPL在具体应用中与其他的完全一样,测试情况:
  实体测试--->通过
  RetrieveCriteira、UpdateCriteria、DeleteCriteria测试--->通过
  Transaction测试--->通过
  自动增长主键测试--->通过
  TOP功能测试--->通过

6、对DateTime的Null值进行了处理 (3.2.0.1开始支持)
  如果要对DateTime类型的字段赋于Null值,只需要使用DateTime.MinValue即可:
  aEntity.CreateDate=DateTime.MinValue;
  在SPL内部会判断如果DateTime.MinValue的话,自动保存到数据库为System.DBNull.Value,这就解决了不能给 DateTime类型直接赋于System.DBNull.Value的问题。

7、修订了UpdateCriteria对属性名与字段名不一致时导致的错误(3.2.0.2开始修订)
原来在UpdateCriteira时没有对属性进行转化为字段名,导致在属性名与字段名不一致的情况下会找不到字段。

(非常感谢iamsunrise提供的建议,请下载了SPL3.2的朋友重新下载一下)
(感谢子扬报出的BUG)

8、本3.2.0.4已经修复了DataBaseType的MySql类型了。

更多关于SPL请访问:http://tintown.cnblogs.com/category/12787.html  
 

MySQL数据库5.0升级到5.1,再升级到5.5

MySQL5.0升级到5.1 备份数据库为sql文件,必须要备份,然后导入数据,使用复制数据库文件会到导致一些奇怪问题,比如:中文乱码,表损坏等     mysqldump  升级授权表   ...
  • jfcat
  • jfcat
  • 2012年09月25日 21:56
  • 788

升级到安卓5.0后,和包提示:“检测到您的手机或sim卡不完全支持和包业务,部分NFC相关功能将无法正常使用”的问题解决办法

一、问题描述 系统版本:Android 5.0 手机型号:三星note3 sim卡:移动的NFC-SIM卡 和包版本:4.2.71 问题现象: 1. 升级到安卓5.0前一切正常,可以使用和包为自己手...

mysql数据库绿色软件制作过程(跟大家分享一下,希望对新手有所帮助)

2013年5月6日-2013年5月9日 1.      接手mysql绿色软件任务 2.      开始搜索网上的相关资料,发现核心是mysql的my.ini配置文件 文件内容网上比较多,我这边...

如何完全干净地删除MySQL数据库

  • 2016年03月15日 16:40
  • 589KB
  • 下载

将pjsip的python扩展从python2.4升级到python3.2

Pjsip 1.8.5中python部分是基于python2.4的,这个有点跟不上时代了。 我的python环境是python3.2的。 修改步骤: 一 替换_pjsua.h和_pjsua.c中...
  • ren911
  • ren911
  • 2011年05月26日 23:08
  • 1573

从PhysX2.8升级到PhysX3.2(3)

上一篇中 ,我给大家介绍了从2.8到3.2, PhysX SDK的架构改变以及支持的模拟特性的变化。这一篇中,我们就重点介绍在新的架构下,PhysX SDK在管理模拟对象方面的改动。   首先,还...

从PhysX2.8升级到PhysX3.2(4)

如果用最简单的话来描述我们使用物理引擎的目的,那么必然是来模拟游戏世界中的碰撞反应。前面两篇的重点是PhysX 2.8和3.2的架构和对象管理方面的不同,这一篇中,我 们的重点将是跟模拟相关的两件最...

从PhysX2.8升级到PhysX3.2(5)

前面的篇幅中,我们介绍了PhysX SDK升级过程中需要注意的模拟和碰撞过滤方面的问题,这一篇中,我们介绍物理引擎另一大常用功能--场景查询(Scene Query)--的改进和升级中需要注意的问题。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SPL升级到3.2了,完全透明支持MySQL数据库了(更新了一下)!
举报原因:
原因补充:

(最多只允许输入30个字)