支持MySQL数据库,SPL升级到3.2

数据库 MySQL
SPL升级到3.2全面支持MySQL数据库在实际中的应用比例还是占为多数的,如果你对这一技术,心存好奇的话,此文章将会揭开它的神秘面纱。

此文章主要讲述的是SPL升级到3.2全面支持MySQL数据库的实际应用与具体操作,如果你是MySQL数据库方面的新手,对MySQL数据库的相关实际应用不是很了解的话,以下的文章会给你提供更全面的知识。

SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进行了MySQL数据库的支持,现在发布SPL版本为3.2.0.4,Dll下载地址:这里 。只需要在项目中,把原来的Dll覆盖即可,如果还没下载过SPL早期版本的朋友,本次SPL自上次发布的3.1.0.5以后进行的更新有:

1、支持MS SQL SERVER中的Bit型数据类型

映射到ClassMap中的类型为boolean,如:

 

  1. <attribute name="IsOver" column="IsOver" type="boolean" /> 

对应的实体类类型为bool型,如:

 

  1. private bool m_IsOver;   
  2. public bool IsOver  
  3. {  
  4. get  
  5. {  
  6. return this.m_IsOver;  
  7. }  
  8. set  
  9. {  
  10. this.m_IsOver = value;  
  11. }  

在查询时可以通过Condition进行比较判断了:

  1. Codition c=....  
  2. c.AddEqualTo("IsOver",false); 

这会最终生成 IsOver='0'的查询条件

2、提供了对数据源的提供者类型的判断,这将方便区分不同的MySQL数据库提供者手动组装不同的SQL语句

用Setting.Instance().GetDatabaseVendor(dbName)根据dbName数据源取得数据源提供者,然后与DatabaseVendor枚举型比较

如Access的日期比较与Sql Server的不一致:一个采用#号,一个采用'号

 

  1. if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsAccess)  
  2. {  
  3. builder.Append(" and SpecialPriceD2.FromDate<=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");  
  4. builder.Append(" and SpecialPriceD2.ToDate>=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#");  
  5. }  
  6. if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsSqlServer)  
  7. {  
  8. builder.Append(" and SpecialPriceD2.FromDate<='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");  
  9. builder.Append(" and SpecialPriceD2.ToDate>='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'");  

 

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

3、修订了对所有保留字的兼容性

目前对所有的SPL中的操作,都加了定界符,ORACLE采用“"”号,MS的采用“[]”号,MySql的采用“`”号,所有测试都通过了

4、在Condition里添加了对Null值的查询功能

此方式只针对AddEqualTo()和AddNotEqualTo()有效:

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

5、增加了对MySql数据库的支持

SPL对MySql的访问连接采用的是MySql提供的专用.NET connector,此驱动应该说是目前.NET连接MySql的***选择,在使用SPL访问MySql时,只需要安装一下此驱动即可,下载与介绍请看

使用时只需要配置DatabaseMap时类型设为“MySql”即可,如下:

  1. <database name="MySqlDB" type="MySql">   
  2. <parameter name="User Id" value="root"/> 
  3. <parameter name="Data Source" value="localhost"/> 
  4. <parameter name="Database" value="mysql"/> 
  5. <parameter name="password" value=""/> 
  6. <classMapFile path="ClassMap.xml" /> 
  7. </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的话,自动保存到MySQL数据库为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类型了。

【编辑推荐】

  1. MySQL 备份的实际应用与功能介绍
  2. MySQL表种类中两大经常使用的类型
  3. 远程连接MySQL速度慢如何破解?
  4. MySQL命令备忘的“后备军”
  5. MySQL常用技巧大汇总
责任编辑:佚名 来源: 互联网
相关推荐

2011-04-12 09:07:50

复制数据库SQL 2008

2011-04-07 09:44:23

SQL2000数据库SQL2005

2021-07-09 13:58:16

MySQL数据库运维

2011-09-27 09:13:16

Ubuntu 11.0

2012-06-11 18:51:40

MySQL漏洞

2011-02-18 09:06:15

ChromeChrome DevLinux

2020-01-13 10:00:32

升级Windows 10Windows

2023-02-28 00:01:53

MySQL数据库工具

2015-07-16 17:00:15

MySQLMariaDBPercona

2011-04-14 11:14:21

OracleNoSQLMySQL

2009-08-02 08:54:46

Windows 7 R系统升级

2010-08-03 17:08:51

DB2V8

2013-12-26 14:54:58

Windows 8.1微软

2015-07-29 10:21:03

微软Windows 10升级

2022-09-12 21:10:42

LinkerdKubernetes

2017-09-06 17:30:41

网站升级HTTPS

2023-06-13 10:44:51

Debian 11Debian 12

2013-11-27 09:38:11

OpenSUSE 13OpenSUSE 12

2011-03-31 13:39:14

mysql3mysql5乱码

2013-05-20 10:39:55

MariaDB
点赞
收藏

51CTO技术栈公众号