本版主要新增特性:
  1 、对Show 语句的支持
       自从CowNewSQL2.1 开始,我们提供了对Show 语句的支持,主要用来查看系统中的表定义、字段定义、支持的函数等。由于各个数据库中取得这些元信息的方式各有不同,经常需要关联查询很多系统表才能搬到,为了简化用户的使用,我们创新性的设计了Show 系列语句,这样您至少使用非常短的语句就可以实现以前需要编写很复杂的语句才能实现的功能。
       Show 语句语法列表:
1 show  tables :显示系统中默认Schema 下的所有表的表名。
2 show  tables Schema 名:显示指定Schema 下的所有表的表名。例子:show tables DEMO
3 show  functions :显示系统支持的函数的列表。
4 show  functioncolumns :显示系统支持的函数参数以及返回值的详细说明。
5 show  tablecolumns 表名:显示指定表的数据列信息。例子:show  tablecolumns table_1。
2、提供了JDBC驱动的使用方式 
       自从 CowNewSQL2.1 开始,我们提供了以 JDBC 驱动方式使用的支持(支持最新的 JDBC4.0 标准)。通过这种方式用户无需修改系统的任何代码,只要修改原有的 JDBC 连接字符串就可以轻松的将 CowNewSQL 融入系统,使用 CowNewSQL JDBC 驱动后系统中所有的 SQL 语句在送到数据库系统中执行前都将会自动进行翻译。
       CowNewSQL JDBC 驱动类为: com.cownew.cownewsql.imsql.jdbc.DBDriver ;连接字符串格式为: jdbc:cownewsql: 目标数据库类型 : 目标数据库 JDBC 驱动类 : JDBC 连接字符串。
使用方式举例:
       原有程序连接到 Oracle 数据库,使用的 Oracle 驱动类为 oracle.jdbc.driver.OracleDriver JDBC 连接字符串为: jdbc:oracle:thin:@192.168.88.128:1521:XE
       我们只要将 CowNewSQL Jar 包(包括 cownewsql***.jar antlr.jar commons-lang**.jar retrotranslator-runtime**.jar 等)加入程序的 ClassPath ,然后修改使用的数据库驱动为: com.cownew.cownewsql.imsql.jdbc.DBDriver ,然后修改 JDBC 连接字符串为: jdbc:cownewsql:oracle:oracle.jdbc.driver.OracleDriver:jdbc:oracle:thin:@192.168.88.128:1521:XE
       这样我们无需修改任何代码就将 CowNewSQL 翻译器轻松的植入了原有系统。
3、增加了对Alter Table语句的支持;修正了Convert函数在各个数据库中取值范围不一致的Bug;改进了方言管理器的实现机制;修复了若干Bug。

下载地址1:[url]http://www.blogjava.net/Files/huanzhugege/cownewsql-2.1.zip[/url]
下载地址2:[url]http://www.cownew.com/Soft/UploadSoft/cownewsql-2.1.zip[/url]


=======================================================================================
 
       由于种种原因,各个数据库系统的 SQL 语句语法以及支持的函数都不尽相同,这造成了如下两个问题:( 1 )系统在多个不同数据库之间移植变得非常困难,特别是需要维护多个数据库版本的时候;( 2 )开发人员必须对各种数据库的语法差异非常了解,这加大了开发难度。
       虽然 Hibernate 通过 HQL 等技术部分的解决了跨数据库移植的问题,但是在对性能要求比较高的场合还是需要直接使用 SQL 语句访问数据库的,在这种情况下如何编写能被不同数据库支持的 SQL 语句就成了。目前解决这种差异的最常用的技术就是 SQL 语句翻译,使用 SQL 翻译器可以将 SQL 语句翻译为在不同的数据库中支持的特定平台的 SQL 语句。 CowNewSQL 就是这样一款产品。
       CowNewSQL 简化了跨数据库产品的开发,比如取当前日期在 MSSQL 中是“ SELECT GETDATE() ”,在 MYSQL 中是“ SELECT NOW() ”,在 Oracle 中是“ SELECT SYSDATE FROM DUAL ”,使用 CowNewSQL 以后您只要使用“ SELECT NOW() ”,那么 CowNewSQL 就会为您自动将其翻译为对应数据库平台支持的 SQL 语句,而且 CowNewSQL 的兼容性也非常好,比如“ SELECT NOW() ”写成“ SELECT GETDATE() ”同样可以被正确的翻译;取数据库前 10 条记录,在 MSSQL 中是“ Select top 10 from T_1 ”、在 MYSQL 中是“ SELECT  LIMIT 0, 10 ”、在 Oracle 中是“ SELECT  FROM DUAL WHERE ROWNUM <= 10 ”,使用 CowNewSQL 以后您只要使用“ Select top 10 from T_1 ”,那么 CowNewSQL 就会为您自动将其翻译为对应数据库平台支持的 SQL 语句。
       CowNewSQL 还通过变通的方式对目标数据库不直接支持的语法进行了支持。比如 MYSQL 是不支持“ select * from t1 where fid in(select fid from t2 limit 0,5) ”这样在子查询中的 Limit 语句的, CowNewSQL 通过将子查询进行二次结果集包装的方式巧妙的对其进行了支持,“ delete from T_SaleInvoice where FId in(select top 5 FParentId from T_SaleInvoiceDetails) ”通过 CowNewSQL 的翻译以后就成了“ DELETE FROM T_SaleInvoice WHERE FId IN (select * from(SELECT FParentId FROM T_SaleInvoiceDetails LIMIT 0, 5 ) t_temp_sub) ”这样被 MYSQL 支持的语法了; MYSQL 中没有提供计算两个日期之间月份差异的函数, CowNewSQL 通过组合其他日期函数的方式模拟了这个函数,这样使用者只要使用 MONTHS_BETWEEN 函数即可了,无需关心内部的差异。
       CowNewSQL 支持如下几种类型的 SQL 语句: CreateTable/AlterTable/DropTable/CreateIndex/DropIndex/Select/Insert/Delete/Update/Show ;支持子查询、 Join Union 等高级的 SQL 特性;支持日期(包括取当前日期、从日期中提取任意部分、计算日期差异、日期前后推算等)、数学(包括取绝对值、取 PI 值、四舍五入、对数计算、随机数等)、字符串(包括取子字符串、取字符串长度、字符串截断、大小写转换等)、基本数据处理(包括数字字符串互转、日期转字符串、非空判断等)等函数。