数据库配置

阅读(608) 标签: 数据库配置, 数据源,

集算器支持包括数据库在内的多种异构数据源。这里,我们大致了解一下集算器连接各类数据库的方法。

数据源管理器的配置方法

连接关系数据库的步骤:

1. Tool菜单项中,点击数据源连接Datasource connection打开数据源管理器;

2. 点击New新建数据源,选择类型。

3. 选择数据库类型、编码等信息,设置数据源的连接参数,并为之起名。

4. 连接,数据源管理器会显示是否连接成功,在数据源管理器中,可以同时连接多个数据库。

集算器自带系统数据源demo,可以通过开始 -> 程序 -> 集算器 -> 启动demo数据源,还可以在IDE安装目录的esProc\bin路径内,找到并运行startDataBase.bat,启动demo数据源。

集算器的集成开发环境提供了多种数据库的JDBC配置提示,包括:SQL serverOracleDB2SybaseAccessmysqlhsqlteradatapostgresql等。使用集算器的程序员需要自行准备数据库的JDBC驱动,这些驱动包由数据库厂家提供。JDBC驱动jar包准备好之后,需要放入集算器IDE安装目录的\common\jdbc中。

从数据库中获取数据

驱动jar包放好,配置完成之后,在IDE中就可以很方便的连接数据库,取出表中的数据,如:

 

A

1

=demo.query("select * from CITIES")

2

$ select * from CITIES

3

=connect("demo")

4

=A3.query("select * from CITIES")

其中,A1使用数据源管理器中已连接的数据源"demo"查询数据。A2使用默认连接的数据库查询。A4使用A3中创建的数据库连接来查询数据,对于创建出的连接,还可以用程序控制,将在4.3控制连接中进一步讲述。A1,A2A4中返回的结果是相同的:

这里在访问数据库查询数据时,都是直接用SQL返回结果,更详细的使用方法,可以阅读4.1使用SQL

其它数据库的配置

集算器也可以通过JDBC-ODBC桥连接数据库,ODBC驱动同样需要程序员自行准备。集算器集成开发环境的ODBC配置界面如下:

可以从列表中选择配置的ODBC数据源,并配置用户名、密码等相关参数。

 

如果需要连接的JDBC数据库不在集算器提供的范围内,可以使用Unknown类型来添加。配置界面如下:

此时使用的JDBC驱动图样需要放入集算器IDE安装目录的\common\jdbc中,并在配置中输入驱动类的名称,以及数据库URL等信息。

集算器 JDBC

集算器JDBC是将集算器作为一个嵌入式应用。在其他网络应用的程序中,使用类似JDBC的连接,就可以调用网格程序。在集算器JDBC中,网格程序被包装成存储过程,因此调用网格程序的方法与调用存储过程相同。

在集算器文件的网格代码中,结果集会通过return函数返回,如下面的test.dfx

 

A

1

=connect("demo")

2

=A1.query("select * from EMPLOYEE where EID=?",arg1)

3

>A1.close()

4

return A2

在上面程序代码中,arg1是一个网格参数,在调用dfx文件时需对其赋值。运算结果是一个序表,通过return命令返回。在这里我们需要注意到的是,在JDBC调用的文件中,有可能需要连接其它的数据源,如本例中的"demo",这样的数据源同样需要配置参数,在集算器JDBC中配置数据源,需要在配置文件raqsoftConfig.xml中处理。

1. 数据源配置方法一,在raqsoftConfig.xml中直接配置数据库数据源连接参数:

<?xml version="1.0" encoding="UTF-8"?>

<Config Version="2">

  <Runtime>

  <DBList>

  <!-- 数据源名称,必须与dfx文件中的数据源名称一致 -->

  <DB name="demo">

  <property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>

  <property name="driver" value="org.hsqldb.jdbcDriver"/>

  <property name="type" value="HSQL"/>

  <property name="user" value="sa"/>

  <property name="password" value=""/>

  <property name="batchSize" value="1000"/>

    <!--

  是否自动连接。如果设定为true,则可以直接使用db.query()函数来访问数据库;如果为false,则不会自动连接,使用前必须用connect(db)语句连接。

  -->

  <property name="autoConnect" value="true"/>

  <property name="useSchema" value="false"/>

  <property name="addTilde" value="false"/>

  <property name="dbCharset" value="GBK"/>

  <property name="clientCharset" value="GBK"/>

  <property name="needTransContent" value="false"/>

  <property name="needTransSentence" value="false"/>

  <property name="caseSentence" value="false"/>

  </DB>

  </DBList >

  </Runtime>

</Config>

2. 数据源配置方法二:在raqsoftConfig.xml中配置应用服务器连接池:

<?xml version="1.0" encoding="UTF-8"?>

<?xml version="1.0" encoding="UTF-8"?>

<Config Version="2">

  <Runtime>

  <DBList>

  </DBList >

  </Runtime>

  <Server>

  <!—默认数据连接,可以是DBList或下面JNDIList中的某一个 -->

  <defDataSource>demo</defDataSource>

  <JNDIList>

  <!-- 数据源名称,必须与dfx文件中的数据源名称一致 -->

  < JNDI name="demo">

  <property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>

  <property name="driver" value="org.hsqldb.jdbcDriver"/>

  <property name="type" value="HSQL"/>

  <property name="user" value="sa"/>

  <property name="password" value=""/>

  <property name="batchSize" value="1000"/>

    <!--

  是否自动连接。如果设定为true,则可以直接使用db.query()函数来访问数据库;如果为false,则不会自动连接,使用前必须用connect(db)语句连接。

  -->

  <property name="autoConnect" value="true"/>

  <property name="useSchema" value="false"/>

  <property name="addTilde" value="false"/>

  <property name="dbCharset" value="GBK"/>

  <property name="clientCharset" value="GBK"/>

  <property name="needTransContent" value="false"/>

  <property name="needTransSentence" value="false"/>

  <property name="caseSentence" value="false"/>

  </JNDI>

  </JNDIList >

  </Server>

</Config>

在配置时,配置文件的名称必须为raqsoftConfig.xml,不能改变。在配置数据库连接信息时,要注意不能循环调用,不能将集算器JDBC本身作为数据源在配置中使用。

在这里我们只讲述了集算器JDBC中数据源的配置,集算器JDBC具体的使用与配置方法,请参考6.3JDBC部署

 

数据源配置完成后,即可在JAVA中调用前面的dfx

public void testDataServer(){

  Connection con = null;

  java.sql.PreparedStatement st;

  java.sql.Statement st2;

  try{

  //建立连接

  Class.forName("com.esproc.jdbc.InternalDriver");

  con= DriverManager.getConnection("jdbc:esproc:local://");

  //调用存储过程,其中testdfx的文件名

  st =con.prepareCall("call test(?)");

  //设置参数

  st.setObject(1,"3");

  //下面的语句和上面的调用方法效果相同

  st =con.prepareCall("call test(3)");

  //执行存储过程

  st.execute();

  //获取结果集

  ResultSet set = st.getResultSet();

 

  //直接创建Statement

  st2=con.createStatement();

  //直接执行网格文件,与前面的call test(3)效果相同

  set=st2.executeQuery("test 3");

  //直接执行语句,指定数据源查询

  set=st2.executeQuery("$(demo)select * from STUDENTS");

  }

  catch(Exception e){

  System.out.println(e);

  }

  finally{

  //关闭连接

  if (con!=null) {

  try {

  con.close();

  }

  catch(Exception e) {

  System.out.println(e);

  }

  }

  }

}

上面的代码中,集算器 JDBC的连接串是"jdbc:esproc:local://",此时将使用默认配置文件中的设定;如果连接串中使用了...?config=...;即用指定的.xml文件中的配置,忽略raqsoftConfig.xml中的定义。

例如:con= DriverManager.getConnection("jdbc:esproc:local:/?config=myconfig.xml"); 则使用myconfig.xml中的配置。

集算器 ODBC

esProc-ODBC数据源的使用,和一般的ODBC数据源是类似的,使用esProc-ODBC前,需要先安装集算器ODBC驱动并启动ODBC服务,具体操作请参考6.6ODBC部署本章节中讲述集算器ODBC中数据源配置及使用。

在集算器的数据源配置中,新建一个ODBC数据源:

 

ODBC配置中,选择所需连接的esProc-ODBC名称,如:

 

这里的用户名和密码是ODBC数据源的配置,留空即可。添加完毕后,esProc-ODBC数据源即可正常连接:

 

此时说明esProc-ODBC可以正常连接到集算器ODBC服务了。集算器的ODBC服务有两个功能:

1. 从主路径中的数据文件中用简单SQL直接查询数据。

2. 调用集算器寻址路径中的dfx文件,返回结果,dfx文件也可以使用绝对路径。

集算器ODBC服务所调用的dfx文件,和集算器JDBC中所调用的集算器文件是相同的,如前面已经见过的test.dfx

 

A

1

=connect("demo")

2

=A1.query("select * from EMPLOYEE where EID=?",arg1)

3

>A1.close()

4

return A2

 

下面,来看如何使用esProc-ODBC来执行查询:

 

A

1

=connect("esProcOdbc")

2

=A1.query("call test(?)",20)

3

=A1.cursor("select * from Order_Electronics.txt")

4

=A3.fetch@x(100)

5

>A1.close()

 

A2中,用call语句调用test.dfx执行查询,结果如下:

 

A3中,用select语句直接从外部数据文件中查询数据,作为外部数据的文本文件名可以直接作为表名来使用,只需把文件置于集算器主路径下就可以了。A4中查询到的结果如下:

集算器ODBC中,可以使用外部数据,用简单SQL进行查询,相关内容,请阅读9.4简单SQL