本版主要新增特性:
1、對(duì)Show語句的支持
自從CowNewSQL2.1開始,我們提供了對(duì)Show語句的支持,主要用來查看系統(tǒng)中的表定義、字段定義、支持的函數(shù)等。由于各個(gè)數(shù)據(jù)庫中取得這些元信息的方式各有不同,經(jīng)常需要關(guān)聯(lián)查詢很多系統(tǒng)表才能搬到,為了簡化用戶的使用,我們創(chuàng)新性的設(shè)計(jì)了Show系列語句,這樣您至少使用非常短的語句就可以實(shí)現(xiàn)以前需要編寫很復(fù)雜的語句才能實(shí)現(xiàn)的功能。
Show語句語法列表:
(1)show tables:顯示系統(tǒng)中默認(rèn)Schema下的所有表的表名。
(2)show tables Schema名:顯示指定Schema下的所有表的表名。例子:show tables DEMO。
(3)show functions:顯示系統(tǒng)支持的函數(shù)的列表。
(4)show functioncolumns:顯示系統(tǒng)支持的函數(shù)參數(shù)以及返回值的詳細(xì)說明。
(5)show tablecolumns 表名:顯示指定表的數(shù)據(jù)列信息。例子:show tablecolumns table_1。
2、提供了JDBC驅(qū)動(dòng)的使用方式
自從CowNewSQL2.1開始,我們提供了以JDBC驅(qū)動(dòng)方式使用的支持(支持最新的JDBC4.0標(biāo)準(zhǔn))。通過這種方式用戶無需修改系統(tǒng)的任何代碼,只要修改原有的JDBC連接字符串就可以輕松的將CowNewSQL融入系統(tǒng),使用CowNewSQL的JDBC驅(qū)動(dòng)后系統(tǒng)中所有的SQL語句在送到數(shù)據(jù)庫系統(tǒng)中執(zhí)行前都將會(huì)自動(dòng)進(jìn)行翻譯。
CowNewSQL的JDBC驅(qū)動(dòng)類為:com.cownew.cownewsql.imsql.jdbc.DBDriver;連接字符串格式為:jdbc:cownewsql:目標(biāo)數(shù)據(jù)庫類型:目標(biāo)數(shù)據(jù)庫JDBC驅(qū)動(dòng)類:原JDBC連接字符串。
使用方式舉例:
原有程序連接到Oracle數(shù)據(jù)庫,使用的Oracle驅(qū)動(dòng)類為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,然后修改使用的數(shù)據(jù)庫驅(qū)動(dòng)為:com.cownew.cownewsql.imsql.jdbc.DBDriver,然后修改JDBC連接字符串為:jdbc:cownewsql:oracle:oracle.jdbc.driver.OracleDriver:jdbc:oracle:thin:@192.168.88.128:1521:XE。
這樣我們無需修改任何代碼就將CowNewSQL翻譯器輕松的植入了原有系統(tǒng)。
3、增加了對(duì)Alter Table語句的支持;修正了Convert函數(shù)在各個(gè)數(shù)據(jù)庫中取值范圍不一致的Bug;改進(jìn)了方言管理器的實(shí)現(xiàn)機(jī)制;修復(fù)了若干Bug。
下載地址1:http://m.tkk7.com/Files/huanzhugege/cownewsql-2.1.zip
下載地址2:http://www.cownew.com/Soft/UploadSoft/cownewsql-2.1.zip
=======================================================================================
由于種種原因,各個(gè)數(shù)據(jù)庫系統(tǒng)的SQL語句語法以及支持的函數(shù)都不盡相同,這造成了如下兩個(gè)問題:(1)系統(tǒng)在多個(gè)不同數(shù)據(jù)庫之間移植變得非常困難,特別是需要維護(hù)多個(gè)數(shù)據(jù)庫版本的時(shí)候;(2)開發(fā)人員必須對(duì)各種數(shù)據(jù)庫的語法差異非常了解,這加大了開發(fā)難度。
雖然Hibernate通過HQL等技術(shù)部分的解決了跨數(shù)據(jù)庫移植的問題,但是在對(duì)性能要求比較高的場合還是需要直接使用SQL語句訪問數(shù)據(jù)庫的,在這種情況下如何編寫能被不同數(shù)據(jù)庫支持的SQL語句就成了。目前解決這種差異的最常用的技術(shù)就是SQL語句翻譯,使用SQL翻譯器可以將SQL語句翻譯為在不同的數(shù)據(jù)庫中支持的特定平臺(tái)的SQL語句。CowNewSQL就是這樣一款產(chǎn)品。
CowNewSQL簡化了跨數(shù)據(jù)庫產(chǎn)品的開發(fā),比如取當(dāng)前日期在MSSQL中是“SELECT GETDATE()”,在MYSQL中是“SELECT NOW()”,在Oracle中是“SELECT SYSDATE FROM DUAL”,使用CowNewSQL以后您只要使用“SELECT NOW()”,那么CowNewSQL就會(huì)為您自動(dòng)將其翻譯為對(duì)應(yīng)數(shù)據(jù)庫平臺(tái)支持的SQL語句,而且CowNewSQL的兼容性也非常好,比如“SELECT NOW()”寫成“SELECT GETDATE()”同樣可以被正確的翻譯;取數(shù)據(jù)庫前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就會(huì)為您自動(dòng)將其翻譯為對(duì)應(yīng)數(shù)據(jù)庫平臺(tái)支持的SQL語句。
CowNewSQL還通過變通的方式對(duì)目標(biāo)數(shù)據(jù)庫不直接支持的語法進(jìn)行了支持。比如MYSQL是不支持“select * from t1 where fid in(select fid from t2 limit 0,5)”這樣在子查詢中的Limit語句的,CowNewSQL通過將子查詢進(jìn)行二次結(jié)果集包裝的方式巧妙的對(duì)其進(jìn)行了支持,“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中沒有提供計(jì)算兩個(gè)日期之間月份差異的函數(shù),CowNewSQL通過組合其他日期函數(shù)的方式模擬了這個(gè)函數(shù),這樣使用者只要使用MONTHS_BETWEEN函數(shù)即可了,無需關(guān)心內(nèi)部的差異。
CowNewSQL支持如下幾種類型的SQL語句:CreateTable/AlterTable/DropTable/CreateIndex/DropIndex/Select/Insert/Delete/Update/Show;支持子查詢、Join、Union等高級(jí)的SQL特性;支持日期(包括取當(dāng)前日期、從日期中提取任意部分、計(jì)算日期差異、日期前后推算等)、數(shù)學(xué)(包括取絕對(duì)值、取PI值、四舍五入、對(duì)數(shù)計(jì)算、隨機(jī)數(shù)等)、字符串(包括取子字符串、取字符串長度、字符串截?cái)?、大小寫轉(zhuǎn)換等)、基本數(shù)據(jù)處理(包括數(shù)字字符串互轉(zhuǎn)、日期轉(zhuǎn)字符串、非空判斷等)等函數(shù)。