<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 郵件請(qǐng)聯(lián)系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評(píng)論 :: 0 Trackbacks

    本版主要新增特性:
      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語句語法列表:

    1show  tables:顯示系統(tǒng)中默認(rèn)Schema下的所有表的表名。

    2show  tables Schema名:顯示指定Schema下的所有表的表名。例子:show tables DEMO。

    3show  functions:顯示系統(tǒng)支持的函數(shù)的列表。

    4show  functioncolumns:顯示系統(tǒng)支持的函數(shù)參數(shù)以及返回值的詳細(xì)說明。

    5show  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),使用CowNewSQLJDBC驅(qū)動(dòng)后系統(tǒng)中所有的SQL語句在送到數(shù)據(jù)庫系統(tǒng)中執(zhí)行前都將會(huì)自動(dòng)進(jìn)行翻譯。

           CowNewSQLJDBC驅(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。

           我們只要將CowNewSQLJar包(包括cownewsql***.jarantlr.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ù)。

    posted on 2007-11-17 15:27 CowNew開源團(tuán)隊(duì) 閱讀(2924) 評(píng)論(10)  編輯  收藏

    評(píng)論

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-11-18 12:52 專注JAVA開源
    下載地址1:http://m.tkk7.com/Files/huanzhugege/cownewsql-2.1.zip
    下載地址2:http://www.cownew.com/Soft/UploadSoft/cownewsql-2.1.zip
    這兩個(gè)地址下載不了  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-11-18 13:49 CowNew開源團(tuán)隊(duì)
    @專注JAVA開源
    是不是您的網(wǎng)絡(luò)有問題?我這可以下載,找了幾個(gè)朋友試了一下也可以下載。  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-11-19 17:10 溫少的日志
    下載看了一下,似乎做的內(nèi)容還是相當(dāng)少。

    建議你參考一下金蝶軟件EAS BOS的KSQL,是一個(gè)應(yīng)用在產(chǎn)品中的成熟的SQL翻譯。單是測(cè)試用例就有數(shù)千個(gè),支持Oracle、Microsoft SQL Server、Sybase、DB2、DB2 AS400。手工編寫的文法分析,沒有使用antlr,速度大約是antlr生成Parser的三至四倍左右吧。

    KSQL的功能也比較完備,支持臨時(shí)表、游標(biāo)、流程控制語句WHILE、IF等。

    這樣的底層核心模塊關(guān)鍵是穩(wěn)定、高效、功能完備。高效還容易,穩(wěn)定是最難的,需要大量的測(cè)試,包括實(shí)際應(yīng)用中的測(cè)試,DB2的限制是最多的,你沒有實(shí)際測(cè)試,可能想不到DB2的限制有如此之多。

    我覺得你現(xiàn)在這三點(diǎn)都不具備。  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-11-19 17:42 CowNew開源團(tuán)隊(duì)
    多謝溫少指教,:)
    1、暫時(shí)沒有手工編寫的文法分析的打算,因?yàn)榭紤]到數(shù)據(jù)庫操作和SQL翻譯的速度比起來不在一個(gè)檔次上,提高SQL翻譯的速度并不會(huì)有明顯的性能提升。Antlr挺好用的,等到以后發(fā)現(xiàn)有性能瓶頸的時(shí)候會(huì)再考慮用手工編寫的文法分析。
    2、CownewSQL也計(jì)劃在未來支持通用的存儲(chǔ)過程。
    3、DB2確實(shí)很討厭,很多其他主流數(shù)據(jù)庫支持的特性它都不支持,它竟然還是關(guān)系數(shù)據(jù)庫的祖宗,看來祖宗就代表著守舊呀,呵呵。
    再次感謝溫少的指教,以后還請(qǐng)高手多提寶貴意見!  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-12-19 13:03 likaijin
    我按照以上的步驟說明用拉一下,出現(xiàn)以下錯(cuò)誤:
    2007-12-19 12:52:48,448 ERROR [http-8088-Processor23] (cn.com.headsoft.database.OperateDB:53) - 無法取得數(shù)據(jù)庫連接:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.cownew.cownewsql.imsql.jdbc.DBDriver'
    java.lang.NullPointerException
    at cn.com.headsoft.database.OperateDB.executeQuery(OperateDB.java:75)
    at cn.com.headsoft.common.dao.impl.SqlUserLoginDAO.validateUser(SqlUserLoginDAO.java:97)
    at cn.com.headsoft.common.action.UserLoginAction.execute(UserLoginAction.java:38)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1480)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:524)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at cn.com.headsoft.common.filter.CheckSessionFilter.doFilter(CheckSessionFilter.java:109)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at cn.com.headsoft.common.filter.EncodingFilter.doFilter(EncodingFilter.java:43)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    我用的是sqlserver2000數(shù)據(jù)庫,直接在Tomcat服務(wù)器的server.xml中對(duì)數(shù)據(jù)源進(jìn)行配置:
    <Context path="/cost1" docBase="D:\eclipse\workspace\WZProject_V1\WebContent" debug="0" reloadable="true">
    <Resource name="ProjectDataSource"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    username="sa"
    password="sasa"
    driverClassName="com.cownew.cownewsql.imsql.jdbc.DBDriver"
    url="jdbc:cownewsql:net.sourceforge.jtds.jdbc.Driver:jdbc:jtds:sqlserver://192.198.64.168:1433/headcost"/>
    </Context>  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-12-19 13:07 CowNew開源團(tuán)隊(duì)
    @likaijin
    請(qǐng)確?!癈owNewSQL的Jar包(包括cownewsql***.jar、antlr.jar、commons-lang**.jar、retrotranslator-runtime**.jar等)加入程序的ClassPath”。  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-12-19 14:00 likaijin
    我改為連接池配置方式:
    <?xml version="1.0" encoding="GBK"?>
    <!-- the proxool configuration can be embedded within your own application's.
    Anything outside the "proxool" tag is ignored. -->
    <something-else-entirely>
    <proxool>
    <alias>SQLServerDB</alias>
    <driver-url>jdbc:cownewsql:sqlserver:net.sourceforge.jtds.jdbc.Driver:jdbc:jtds:sqlserver://127.0.0.1:1433/www</driver-url>
    <driver-class>com.cownew.cownewsql.imsql.jdbc.DBDriver</driver-class>

    <driver-properties>
    <property name="user" value="sa"/>
    <property name="password" value="sasa"/>
    </driver-properties>
    <maximum-connection-count>400</maximum-connection-count>
    <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
    </proxool>
    </something-else-entirely>
    已經(jīng)不報(bào)錯(cuò)誤,但后臺(tái)sql編譯還是有點(diǎn)問題,而且速度有些慢,這幾個(gè)包我都直接放到我的工程WEB-INF/lib/文件夾下拉,應(yīng)該是沒有問題的,但還是看不到效果。。。。  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2007-12-19 14:18 CowNew開源團(tuán)隊(duì)
    后臺(tái)sql編譯有什么問題???
    你執(zhí)行一下“select trim(' a b ')”,看看能不能得到“a b”,如果可以的話就說明沒問題。  回復(fù)  更多評(píng)論
      

    # re: 多數(shù)據(jù)庫翻譯器CowNewSQL 2.1 發(fā)布 2008-06-06 10:41 fire9
    不錯(cuò)的東西啊!支持!  回復(fù)  更多評(píng)論
      

    # CowNewSQl 臨時(shí)表 2009-02-27 15:55 ysj
    CowNewSQl 臨時(shí)表和字符字段的連接無法翻譯!  回復(fù)  更多評(píng)論
      


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一边摸一边桶一边脱免费视频 | 人妻免费一区二区三区最新| 久久亚洲国产午夜精品理论片| 热re99久久6国产精品免费| 亚洲国产激情在线一区| 亚洲AV之男人的天堂| 久久久久国产精品免费看| 中文字幕乱码亚洲精品一区| 久久久久亚洲AV成人网人人网站| 亚洲视频在线免费看| 直接进入免费看黄的网站| 亚洲欧洲日产国码久在线观看| 成人毛片视频免费网站观看| 久久久久久久久久免免费精品| 亚洲乱码一二三四区麻豆| ZZIJZZIJ亚洲日本少妇JIZJIZ| 国产91色综合久久免费分享| 国产精品黄页免费高清在线观看| 亚洲中字慕日产2021| 久久青青草原亚洲av无码| 一个人免费高清在线观看| 两个人看的www免费视频| 亚洲日韩AV无码一区二区三区人| 久久亚洲国产中v天仙www| 免费播放春色aⅴ视频| 国产精品免费精品自在线观看| 一级一级毛片免费播放| 最新亚洲春色Av无码专区| 亚洲色欲www综合网| 伊人久久大香线蕉亚洲五月天| 男女交性永久免费视频播放| 91在线老王精品免费播放| 国产免费福利体检区久久| 亚洲丶国产丶欧美一区二区三区| 337p日本欧洲亚洲大胆精品555588 | 亚洲91精品麻豆国产系列在线| 亚洲色成人WWW永久网站| 免费一看一级毛片全播放| 毛片a级毛片免费观看品善网| 日韩内射激情视频在线播放免费 | 四虎免费大片aⅴ入口|