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类型数据库,填写Driver,URL、User、Password等JDBC属性:
创建成功后,数据源列表里就有jdbcCompany连接了,尝试Connect,连接成功了:
接下来就能在SPL脚本中使用jdbcCompany了:
A |
|
1 |
=connect("jdbcCompany") |
2 |
=A1.query("select * from employees") |
3 |
>A1.close() |
执行后,看到 A2 读出了 employees 表的数据:
ODBC
安装Mysql的ODBC驱动后,在Windows的ODBC数据源管理程序里新建MyComany数据源:
在桌面SPL中,创建ODBC类型的数据源:
进入详细配置页面,给新建的数据源连接起名为odbcCompany,选择Windows系统中的MyCompany数据源,输入Username、Password:
创建成功后,尝试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标签下可以看到jdbcCompany、odbcCompany两个数据源:
手动编辑raqsoftConfig.xml或通过界面,都可以管理SPL中的数据源。
JNDI连接池方式
用户自有的WEB系统中有JNDI连接池时,嵌入WEB系统的SPL脚本可以使用这些连接池中的数据库连接,在raqsoftConfig.xml的Config -> Server -> JNDIList下,可以配置多个JNDI数据源:
注意,要配置正确的lookup值,才能连接成功,不同的WEB服务器有不同的Jndi lookup前缀, Tomcat和Resion要求前缀为java:com/env;Jboss要求为Java: ;Weblogic和Webshpere没有要求。
配置好的jndiCompany数据源,在SPL脚本中,就能正常使用了,这个脚本是在WEB环境下的Java代码里执行,因此把查询的数据打印到控制台方便观察,A2用output函数输出一个描述语句,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,能看到控制台取到了数据:
英文版