qileilove

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

          集算器訪問數(shù)據(jù)庫的配置

           集算器支持包括數(shù)據(jù)庫在內的多種異構數(shù)據(jù)源。這里,我們通過例子來看一下集算器訪問數(shù)據(jù)庫的方法。
            集算器可以連接數(shù)據(jù)庫的jdbc驅動,也可以通過jdbc-odbc橋連接數(shù)據(jù)庫。由于版權的原因,使用集算器的程序員需要自行準備數(shù)據(jù)庫的jdbc或者odbc驅動。Jdbc驅動jar包準備好之后,需要放入集算器IDE安裝目錄的/common/jdbc中,例如:C:\Program Files (x86)\MicroInsight\common\jdbc目錄中。
            集算器集成開發(fā)環(huán)境的ODBC配置界面如下:
            集算器的集成開發(fā)環(huán)境提供了多種數(shù)據(jù)庫的jdbc配置提示,包括:SQLserver、Oracle、DB2、Sybase、Access、mysql、hsql、teradata、postgres等。如果需要連接的數(shù)據(jù)庫不在這個范圍內,可以使用other類型來添加。配置界面如下:
            驅動jar包放好,配置完成之后,在IDE中就可以很方便的連接數(shù)據(jù)庫,取出表中的數(shù)據(jù):
            上圖中A1單元格連接上了一個名為demo的hsql數(shù)據(jù)庫,A2單元使用sql語句查詢了employee表,作為集算器的序表存入了A2單元格這個變量中,arg1是外部傳入的參數(shù)。A3單元格關閉了數(shù)據(jù)庫連接,A4單元格對外返回查詢結果。集算器的集成開發(fā)環(huán)境右下角紅框中可以顯示demo數(shù)據(jù)庫的表名、字段名,可以方便程序員書寫sql語句。
            和集算器提供的其他函數(shù)一樣,query函數(shù)包含選項和參數(shù)。如果寫成query@1(“select * from employee”),@1是表示使用了1選項,查看函數(shù)說明可知,是僅僅返回sql語句取出的第一條記錄。而括號中是參數(shù),上圖的括號中是一條sql語句的字符串,沒有其他參數(shù),也就是說其他所有的參數(shù)都使用了默認值。
            上圖中的集算器網格程序可以集成到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、  部署數(shù)據(jù)庫驅動jar包。
            將集算器連接數(shù)據(jù)庫所需要的數(shù)據(jù)庫jdbc驅動包也放入Java應用的classpath中。例如:demo數(shù)據(jù)庫的hsql.jar。
            4、  配置dfxConfig.xml、config.xml文件。
            config.xml文件中包含了集算器的基本配置信息,如注冊碼、尋址路徑、主目錄、數(shù)據(jù)源配置等,可以在集算器安裝目錄的esProc\config路徑下找到,其中存儲的信息與集算器的選項頁面中設定相同。dfxConfig.xml可以在安裝目錄esProc\classes中找到。這里介紹集算器連接數(shù)據(jù)庫的部分配置,其他配置參見集算器教程。
           1)配置數(shù)據(jù)源的方式之一:直接配置數(shù)據(jù)庫數(shù)據(jù)源連接參數(shù)。
            config.xml文件:
          <DBList>
          <!-- 數(shù)據(jù)源名稱,必須與dfx文件中的數(shù)據(jù)源名稱一致 -->
          <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()函數(shù)來訪問數(shù)據(jù)庫;如果為false,則不會自動連接,使用前必須用connect(db)語句連接。
          -->
          <propertyname="autoConnect" value="true"/>
          <property name="useSchema"value="false"/>
          <propertyname="addTilde" value="false"/>
          </DB>
          </DBList>
            2)配置數(shù)據(jù)源的方式之二:在Java應用中配置連接池和jndi,在dfxConfig.xml文件中指定jndi名稱。
            dfxConfig.xml文件:
          <jndi-ds-configs>
          <!-- jndi前綴 -->
          <jndi-prefix>java:comp/env</jndi-prefix>
          <!-- 數(shù)據(jù)源名稱,必須與dfx文件中的數(shù)據(jù)源名稱一致 -->
          <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()函數(shù)來訪問數(shù)據(jù)庫;如果為false,則不會自動連接,使用前必須用connect(db)語句連接。
          -->
          <autoConnect>true</autoConnect>
          </jndi-ds-config>
          </jndi-ds-configs>
            需要說明的是:
            配置文件的名稱必須為config.xml和dfxConfig.xml,不能改變。
            在配置數(shù)據(jù)庫連接信息時,要注意不能循環(huán)調用,不能將集算器JDBC本身作為數(shù)據(jù)源在配置中使用。
            如果兩種方式都配置了同名的數(shù)據(jù)源,就以config.xml中的為準。
            5、  部署dfxConfig.xml、config.xml和test.dfx文件。
            將dfxConfig.xml、config.xml放入Java應用的類路徑下(classpath),也可以直接打包到dm.jar中。
            將test.dfx文件放到Java應用的類路徑下,也可以放到dfxConfig.xml文件的<paths/>節(jié)點指定的絕對路徑中。
            6、  在java程序中調用test.dfx。
            如果集算器 JDBC的連接串中使用了...?config=...;即用該.xml文件中的配置,忽略config.xml中的定義;連接串中無config參數(shù)時則用默認配置。
            例如: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(?)");
          //設置參數(shù)
          st.setObject(1,"3");
          //下面的語句和上面的調用方法效果相同
          st =(com.esproc.jdbc.InternalCStatement)con.prepareCall("calltest(3)");
          //執(zhí)行存儲過程
          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 閱讀(263) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

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

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 桂平市| 新和县| 同江市| 中西区| 墨脱县| 肥东县| 乌什县| 库尔勒市| 新蔡县| 瑞丽市| 拉萨市| 祥云县| 申扎县| 西安市| 罗城| 石屏县| 潞西市| 聂荣县| 原阳县| 普宁市| 天长市| 富川| 湘阴县| 古交市| 惠来县| 沁源县| 营山县| 大同县| 洪江市| 藁城市| 大悟县| 乌什县| 诸城市| 防城港市| 马边| 正蓝旗| 赞皇县| 右玉县| 西乌珠穆沁旗| 德化县| 瑞金市|