qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          集算器訪問數據庫的配置

           集算器支持包括數據庫在內的多種異構數據源。這里,我們通過例子來看一下集算器訪問數據庫的方法。
            集算器可以連接數據庫的jdbc驅動,也可以通過jdbc-odbc橋連接數據庫。由于版權的原因,使用集算器的程序員需要自行準備數據庫的jdbc或者odbc驅動。Jdbc驅動jar包準備好之后,需要放入集算器IDE安裝目錄的/common/jdbc中,例如:C:\Program Files (x86)\MicroInsight\common\jdbc目錄中。
            集算器集成開發環境的ODBC配置界面如下:
            集算器的集成開發環境提供了多種數據庫的jdbc配置提示,包括:SQLserver、Oracle、DB2、Sybase、Access、mysql、hsql、teradata、postgres等。如果需要連接的數據庫不在這個范圍內,可以使用other類型來添加。配置界面如下:
            驅動jar包放好,配置完成之后,在IDE中就可以很方便的連接數據庫,取出表中的數據:
            上圖中A1單元格連接上了一個名為demo的hsql數據庫,A2單元使用sql語句查詢了employee表,作為集算器的序表存入了A2單元格這個變量中,arg1是外部傳入的參數。A3單元格關閉了數據庫連接,A4單元格對外返回查詢結果。集算器的集成開發環境右下角紅框中可以顯示demo數據庫的表名、字段名,可以方便程序員書寫sql語句。
            和集算器提供的其他函數一樣,query函數包含選項和參數。如果寫成query@1(“select * from employee”),@1是表示使用了1選項,查看函數說明可知,是僅僅返回sql語句取出的第一條記錄。而括號中是參數,上圖的括號中是一條sql語句的字符串,沒有其他參數,也就是說其他所有的參數都使用了默認值。
            上圖中的集算器網格程序可以集成到Java應用中,作為集算器jdbc驅動被Java程序調用,具體方法是:
            1、  準備dfx文件。
            將集算器程序保存成test.dfx。
            2、  部署集算器jar包。
            將調用集算器程序所必須的jar包放入Java應用的classpath中。如果是web應用,可以放在WEB-INF/lib目錄下。這些jar包都位于集算器IDE的安裝目錄\esProc\lib下,包括:
            dm.jar                          集算器計算引擎及JDBC驅動包
            poi-3.7-20101029.jar            處理對Excel文件的讀寫
            log4j_128.jar             處理日志
            icu4j_3_4_5.jar        處理國際化
            dom4j-1.6.1.jar        解析配置文件
            3、  部署數據庫驅動jar包。
            將集算器連接數據庫所需要的數據庫jdbc驅動包也放入Java應用的classpath中。例如:demo數據庫的hsql.jar。
            4、  配置dfxConfig.xml、config.xml文件。
            config.xml文件中包含了集算器的基本配置信息,如注冊碼、尋址路徑、主目錄、數據源配置等,可以在集算器安裝目錄的esProc\config路徑下找到,其中存儲的信息與集算器的選項頁面中設定相同。dfxConfig.xml可以在安裝目錄esProc\classes中找到。這里介紹集算器連接數據庫的部分配置,其他配置參見集算器教程。
           1)配置數據源的方式之一:直接配置數據庫數據源連接參數。
            config.xml文件:
          <DBList>
          <!-- 數據源名稱,必須與dfx文件中的數據源名稱一致 -->
          <DBname="demo">
          <propertyname="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>
          <propertyname="driver" value="org.hsqldb.jdbcDriver"/>
          <propertyname="type" value="HSQL"/>
          <propertyname="user" value="sa"/>
          <propertyname="password" value=""/>
          <propertyname="batchSize" value="1000"/>
          <!--
          是否自動連接。如果設定為true,則可以直接使用db.query()函數來訪問數據庫;如果為false,則不會自動連接,使用前必須用connect(db)語句連接。
          -->
          <propertyname="autoConnect" value="true"/>
          <property name="useSchema"value="false"/>
          <propertyname="addTilde" value="false"/>
          </DB>
          </DBList>
            2)配置數據源的方式之二:在Java應用中配置連接池和jndi,在dfxConfig.xml文件中指定jndi名稱。
            dfxConfig.xml文件:
          <jndi-ds-configs>
          <!-- jndi前綴 -->
          <jndi-prefix>java:comp/env</jndi-prefix>
          <!-- 數據源名稱,必須與dfx文件中的數據源名稱一致 -->
          <jndi-ds-config>
          <name>demo</name>
          <dbType>HSQL</dbType>
          <dbCharset>ISO-8859-1</dbCharset>
          <clientCharset>ISO-8859-1</clientCharset>
          <needTranContent>false</needTranContent>
          <needTranSentence>false</needTranSentence>
          <!--
          是否自動連接。如果設定為true,則可以直接使用db.query()函數來訪問數據庫;如果為false,則不會自動連接,使用前必須用connect(db)語句連接。
          -->
          <autoConnect>true</autoConnect>
          </jndi-ds-config>
          </jndi-ds-configs>
            需要說明的是:
            配置文件的名稱必須為config.xml和dfxConfig.xml,不能改變。
            在配置數據庫連接信息時,要注意不能循環調用,不能將集算器JDBC本身作為數據源在配置中使用。
            如果兩種方式都配置了同名的數據源,就以config.xml中的為準。
            5、  部署dfxConfig.xml、config.xml和test.dfx文件。
            將dfxConfig.xml、config.xml放入Java應用的類路徑下(classpath),也可以直接打包到dm.jar中。
            將test.dfx文件放到Java應用的類路徑下,也可以放到dfxConfig.xml文件的<paths/>節點指定的絕對路徑中。
            6、  在java程序中調用test.dfx。
            如果集算器 JDBC的連接串中使用了...?config=...;即用該.xml文件中的配置,忽略config.xml中的定義;連接串中無config參數時則用默認配置。
            例如:con=DriverManager.getConnection("jdbc:esproc:local://?config=myconfig.xml");則使用myconfig.xml中的定義。
            樣例代碼如下:
          public voidtestDataServer(){
          Connection con = null;
          com.esproc.jdbc.InternalCStatementst;
          com.esproc.jdbc.InternalCStatement st2;
          try{
          //建立連接
          Class.forName("com.esproc.jdbc.InternalDriver");
          con=DriverManager.getConnection("jdbc:esproc:local://");
          //調用存儲過程,其中test是dfx的文件名
          st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("calltest(?)");
          //設置參數
          st.setObject(1,"3");
          //下面的語句和上面的調用方法效果相同
          st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("calltest(3)");
          //執行存儲過程
          st.execute();
          //獲取結果集
          ResultSet set =st.getResultSet();
          }
          catch(Exception e){
          System.out.println(e);
          }
          finally{
          //關閉連接
          if(con!=null) {
          try {
          con.close();
          }
          catch(Exception e){
          System.out.println(e);
          }
          }
          }
          }

          posted on 2014-09-26 11:33 順其自然EVO 閱讀(266) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 方城县| 长岭县| 榕江县| 开鲁县| 宁蒗| 靖远县| 雷波县| 嘉荫县| 喀什市| 福贡县| 洮南市| 纳雍县| 镇沅| 武川县| 交城县| 太仓市| 常德市| 青岛市| 兰溪市| 汨罗市| 岳阳市| 郑州市| 松江区| 大宁县| 准格尔旗| 乐陵市| 泰兴市| 吴桥县| 离岛区| 宽城| 浏阳市| 常山县| 麻栗坡县| 昆山市| 内江市| 湾仔区| 望奎县| 当阳市| 涪陵区| 时尚| 资兴市|