SPL:连接数据库

SPL提供了两种方式连接数据库:JDBC/ODBC直连方式;JNDI连接池方式。

Mysql中有一个MyCompany库,库里有employees表,下面尝试各种方式连接它。

..

直连方式

JDBC

Mysql官网下载JDBC驱动,如mysql-connector-java-***.jar,然后放入{SPL安装目录}/common/jdbc/,启动桌面SPL

快速连接

SPL脚本中使用Mysql驱动类、连接URL就能直接连上MyCompany库了:


A

1

=connect("com.mysql.jdbc.Driver",

"jdbc:mysql://127.0.0.1:3306/MyCompany?user=root&password=123456")

2

=A1.query("select * from employees")

3

>A1.close()

执行后,看到 A2 读出了 employees 表的数据:

..

配置数据源

快速连接虽然方便,但不利于数据源的统一管理,接下来看怎么预先配置数据源。

选择菜单栏Tool –> Connect to Data Source

..

打开数据源管理页面,点击New

..

选择JDBC类型数据源:

..

进入详细配置页面,给新建的数据源连接起名为jdbcCompany,选择Mysql类型数据库,填写DriverURLUserPasswordJDBC属性:

..

创建成功后,数据源列表里就有jdbcCompany连接了,尝试Connect,连接成功了:

..

接下来就能在SPL脚本中使用jdbcCompany了:


A

1

=connect("jdbcCompany")

2

=A1.query("select * from employees")

3

>A1.close()

执行后,看到 A2 读出了 employees 表的数据:

..

ODBC

安装MysqlODBC驱动后,在WindowsODBC数据源管理程序里新建MyComany数据源:

..

在桌面SPL中,创建ODBC类型的数据源:

..

进入详细配置页面,给新建的数据源连接起名为odbcCompany,选择Windows系统中的MyCompany数据源,输入UsernamePassword

..

创建成功后,尝试Connect,也连接成功了:

..

SPL脚本中连接odbcCompany,也能查出employees表的数据:


A

1

=connect("odbcCompany")

2

=A1.query("select * from employees")

3

>A1.close()

..

配置文件

上面介绍的两种直连方式,都是通过桌面SPL中的界面设置的,这些详细配置是存储在{SPL安装目录}/esProc/config/raqsoftConfig.xml中,在Config -> Runtime -> DBList标签下可以看到jdbcCompanyodbcCompany两个数据源:

..

手动编辑raqsoftConfig.xml或通过界面,都可以管理SPL中的数据源。

JNDI连接池方式

用户自有的WEB系统中有JNDI连接池时,嵌入WEB系统的SPL脚本可以使用这些连接池中的数据库连接,在raqsoftConfig.xmlConfig -> Server -> JNDIList下,可以配置多个JNDI数据源:

..

注意,要配置正确的lookup值,才能连接成功,不同的WEB服务器有不同的Jndi lookup前缀, TomcatResion要求前缀为java:com/envJboss要求为Java: WeblogicWebshpere没有要求。

配置好的jndiCompany数据源,在SPL脚本中,就能正常使用了,这个脚本是在WEB环境下的Java代码里执行,因此把查询的数据打印到控制台方便观察,A2output函数输出一个描述语句,A4输出从Mysql查到的数据:


A

1

=connect("jndiCompany")

2

=output("-----jndiCompany connected-----")

3

=A1.query("select * from employees")

4

=output(A3)

脚本保存为testJndi.dfx,写一个testJndi.jsp,通过SPL内置jdbc调用脚本文件:

<%@ page contentType="text/html;charset=UTF-8" %>

<%@ page import="java.util.*"%>

<%@ page import="java.sql.*"%>

Test SPL Jndi in Tomcat!~~

<%

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

Connection con= DriverManager

.getConnection("jdbc:esproc:local:/?config=e:/raqsoftConfig.xml");

con.createStatement().execute("call testJndi");

%>

Java里调用SPL脚本的更多细节做法参考Java 如何调用 SPL 脚本》

访问testJndi.jsp,能看到控制台取到了数据:

..