本版主要新增特性:
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:http://www.blogjava.net/Files/huanzhugege/cownewsql-2.1.zip
下载地址2:http://www.cownew.com/Soft/UploadSoft/cownewsql-2.1.zip
=======================================================================================
由于种种原因,各个数据库系统的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值、四舍五入、对数计算、随机数等)、字符串(包括取子字符串、取字符串长度、字符串截断、大小写转换等)、基本数据处理(包括数字字符串互转、日期转字符串、非空判断等)等函数。