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

    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  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu系统中,可以使用MySQL或PostgreSQL等关系型数据库来存储服务器的多个SPL(Stored Procedure Language)。 1. 首先需要在Ubuntu系统中安装MySQL或PostgreSQL数据库,可以通过以下命令进行安装: - MySQL安装命令:sudo apt-get install mysql-server - PostgreSQL安装命令:sudo apt-get install postgresql 2. 创建数据库和用户,可以通过以下命令进行创建: - MySQL创建数据库和用户命令: ``` mysql -u root -p CREATE DATABASE database_name; CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'; ``` - PostgreSQL创建数据库和用户命令: ``` sudo -u postgres psql CREATE DATABASE database_name; CREATE USER username WITH PASSWORD 'password'; GRANT ALL PRIVILEGES ON DATABASE database_name TO username; ``` 3. 将SPL导入到数据库中,可以使用以下命令: - MySQL导入SPL命令: ``` mysql -u username -p database_name < spl_file.sql ``` - PostgreSQL导入SPL命令: ``` psql -U username -d database_name -f spl_file.sql ``` 其中,username为数据库用户,database_name为数据库名称,spl_file.sql为SPL文件名。 4. 执行SPL,可以通过以下命令执行: - MySQL执行SPL命令: ``` mysql -u username -p database_name CALL stored_procedure_name(); ``` - PostgreSQL执行SPL命令: ``` psql -U username -d database_name SELECT stored_procedure_name(); ``` 其中,stored_procedure_name为SPL名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值