<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

    CowNew開源團(tuán)隊(duì)

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
    CowNewSQL多數(shù)據(jù)庫翻譯器在線演示已經(jīng)開發(fā)完成,歡迎體驗(yàn)
    http://211.99.196.18:6666/cownewdemo

    由于訪問人數(shù)眾多,如果暫時(shí)無法訪問,請稍后再試。
    目前已經(jīng)支持SQLServer、DB2、MySQL、Oracle四種數(shù)據(jù)庫管理系統(tǒng)。
    CowNewSQL源碼和二進(jìn)制包可以從CowNew網(wǎng)站(http://www.cownew.com )下載。
    **********************************************
           由于種種原因,各個數(shù)據(jù)庫系統(tǒng)的SQL語句語法以及支持的函數(shù)都不盡相同,這造成了如下兩個問題:(1)使得系統(tǒng)在多個不同數(shù)據(jù)庫之間移植變得非常困難,特別是需要維護(hù)多個數(shù)據(jù)庫版本的時(shí)候;(2)開發(fā)人員必須對各種數(shù)據(jù)庫的語法差異非常了解,這加大了開發(fā)難度。

           雖然Hibernate通過HQL等技術(shù)部分的解決了跨數(shù)據(jù)庫移植的問題,但是在對性能要求比較高的場合還是需要直接使用SQL語句訪問數(shù)據(jù)庫的,在這種情況下如何編寫能被不同數(shù)據(jù)庫支持的SQL語句就成了。目前解決這種差異的最常用的技術(shù)就是SQL語句翻譯,使用SQL翻譯器可以將SQL語句翻譯為在不同的數(shù)據(jù)庫中支持的特定平臺的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就會為您自動將其翻譯為對應(yīng)數(shù)據(jù)庫平臺支持的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就會為您自動將其翻譯為對應(yīng)數(shù)據(jù)庫平臺支持的SQL語句。

           CowNewSQL還通過變通的方式對目標(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é)果集包裝的方式巧妙的對其進(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ì)算兩個日期之間月份差異的函數(shù),CowNewSQL通過組合其他日期函數(shù)的方式模擬了這個函數(shù),這樣使用者只要使用MONTHS_BETWEEN函數(shù)即可了,無需關(guān)心內(nèi)部的差異。

           CowNewSQL支持如下幾種類型的SQL語句:CreateTable/DropTable/CreateIndex/DropIndex/Select/Insert/Delete/Update;支持子查詢、JoinUnion等高級的SQL特性;支持日期(包括取當(dāng)前日期、從日期中提取任意部分、計(jì)算日期差異、日期前后推算等)、數(shù)學(xué)(包括取絕對值、取PI值、四舍五入、對數(shù)計(jì)算、隨機(jī)數(shù)等)、字符串(包括取子字符串、取字符串長度、字符串截?cái)唷⒋笮戅D(zhuǎn)換等)、基本數(shù)據(jù)處理(包括數(shù)字字符串互轉(zhuǎn)、日期轉(zhuǎn)字符串、非空判斷等)等函數(shù)。

    posted on 2007-10-21 23:39 CowNew開源團(tuán)隊(duì) 閱讀(1390) 評論(10)  編輯  收藏

    評論

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-10-22 09:19 驚鴻逝水
    是否支持Oracle 的Start With..... Connect by......?  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-10-22 11:12 BeanSoft
    非常不錯 支持了!  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-10-22 12:03 kitsionlee
    關(guān)注,支持  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-10-22 19:58 CowNew開源團(tuán)隊(duì)
    @驚鴻逝水
    暫時(shí)不支持。我們會研究是否能在其他DBMS上模擬此語法,如果可以的話,我們會在后面的版本中對其提供支持。  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-11 19:40 驚鴻逝水
    @CowNew開源團(tuán)隊(duì)

    簡單用了一下,也不支持:
    SELECT * FROM (SELECT rownum n, a.* FROM (SELECT * FROM t_user )a WHERE rownum<=?) WHERE n>?

    語句?  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-13 17:15 驚鴻逝水
    也不支持select語句包含括號,函數(shù),
    select max(a1) from table

    //MSSQLServer翻譯結(jié)果
    SELECT max(a1)
    //MYSQL翻譯結(jié)果
    SELECT max(a1)
    //Oracle翻譯結(jié)果
    SELECT max(a1) FROM DUAL
    //DB2翻譯結(jié)果
    SELECT max(a1) FROM SYSIBM.SYSDUMMY1

    語法解析器考慮不周全,希望能盡早修復(fù)這些BUG


      回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-13 17:19 CowNew開源團(tuán)隊(duì)
    @驚鴻逝水
    "table"是SQL的關(guān)鍵字,所以不能用作表名,改為比如“select max(a1) from table1”就可以了。
    “SELECT * FROM (SELECT rownum n, a.* FROM (SELECT * FROM t_user )a WHERE rownum<=?) WHERE n>?”這個請使用SQLServer的TOP語法,可以參考在線演示中的【樣例】→【特色語法】→【取結(jié)果集前N條】。
    感謝你的建議,:)。  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-13 17:23 驚鴻逝水
    @CowNew開源團(tuán)隊(duì)

    我看看了你們的sqltreeparser.g,from_clause 只支持table_elements,不支持select_elements ,所以使用SELECT rownum n, a.* FROM (SELECT * FROM t_user ) 出異常

    本來我想修改一下,但發(fā)現(xiàn)
    #(FROM_CLAUSE (table_element|select_elements)+) 也不正確,呵呵  回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-13 17:28 CowNew開源團(tuán)隊(duì)
    @驚鴻逝水
    CowNewSQL是支持from_clause中的select_elements 。“SELECT rownum n, a.* FROM (SELECT * FROM t_user ) ”這句話不能正確翻譯主要有如下兩個原因:
    (1)rownum 是關(guān)鍵字,所以不能用作列名。這個問題我們會在后續(xù)版本修改,只支持Top語法,這樣解析也會快一點(diǎn)。不知是否可以?
    (2)暫不支持a.*這樣的表后的“*”,只支持,select * from ....。

    改成“SELECT aa n, a.id,a.name FROM (SELECT * FROM t_user )”就可以通過翻譯了。
      回復(fù)  更多評論
      

    # re: CowNewSQL多數(shù)據(jù)庫翻譯器在線演示 2007-11-13 17:38 驚鴻逝水
    very good!謝謝!

    希望在后續(xù)版本可以看到這些改進(jìn):)

    記得到時(shí)候通知一聲啊,呵呵,十分感謝答復(fù)*-* 繼續(xù)關(guān)注!  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 8888四色奇米在线观看免费看| 在线免费播放一级毛片| 波多野结衣在线免费视频| 亚洲网址在线观看你懂的| 日韩免费在线观看视频| 亚洲av综合色区| 7m凹凸精品分类大全免费| 久久亚洲日韩看片无码| 亚洲电影免费观看| 色偷偷亚洲女人天堂观看欧| 欧美a级在线现免费观看| 亚洲国产成人AV在线播放 | 亚洲午夜精品在线| 国产大片免费网站不卡美女| 日本亚洲精品色婷婷在线影院| 免费高清小黄站在线观看 | 亚洲欧美中文日韩视频| 亚洲精品成a人在线观看| 亚洲AV综合永久无码精品天堂| 四虎国产精品免费久久影院| 青青青视频免费观看| 国产精品亚洲A∨天堂不卡| 一区二区在线免费观看| 国产成人精品亚洲2020| 四虎永久在线精品免费影视| 两个人看的www免费高清| 亚洲天堂中文字幕| 白白国产永久免费视频| 香蕉视频在线免费看| 亚洲色图黄色小说| 国产午夜无码视频免费网站 | 欧洲精品99毛片免费高清观看 | 国产亚洲精久久久久久无码77777| 国产免费拔擦拔擦8X高清在线人| 亚洲人和日本人jizz| 四虎永久成人免费| 最近中文字幕高清免费中文字幕mv | 中国在线观看免费的www| 亚洲AV无码一区二区三区在线| 国产一区二区三区在线免费观看| 在线涩涩免费观看国产精品|