学习如何用 Jython 编写 DB2 JDBC 工具
2009-12-08 00:00:00 来源:WEB开发网
清单 7. (batchinsert.jy)createEmployee 函数from java.lang import *
from java.sql import *
import sys
def createEmployee(**args):
global stmt
sqlTemplate=
"INSERT into EMPLOYEE (EMPNO,FIRSTNAME,MIDINIT,LASTNAME,SALARY,SEX,EDLEVEL, HIREDATE, WORKDEPT,JOB)
values ((select RTRIM(CHAR(MAX(INT(EMPNO))+1)) from EMPLOYEE),
'%(firstName)s', '%(midinit)s','%(lastName)s',
%(salary).2f,'%(sex)s' ,18, CURRENT DATE,'%(workdept)s','%(job)s')"
# dictionary based SQL string formatting
sql=sqlTemplate % args
stmt.addBatch(sql)
# load DB2 JDBC type 2 driver
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance()
con = DriverManager.getConnection( 'jdbc:db2:sample', 'vyang','jythonrocks');
con.setAutoCommit(0)
stmt = con.createStatement()
execfile(sys.argv[1])
stmt.executeBatch()
stmt.close()
# commit
con.commit()
con.close()
这里有许多新内容。
con.setAutoCommit(0) 用于关闭自动提交(auto commit),就像 JDBC 调用中的 con.setAutoCommit(false) 一样。
用于成批插入的 stmt.addBatch(sql) 、 stmt.executeBatch() 能有效地加快批量插入的速度。该技术还在 Neo 的加载仿真器中用于进行大容量的插入。
global stmt 将使 stmt 成为一个共享的全局变量,很适用于该环境中。
def createEmployee(**args) 接收参数为字典 args ,并显示 Jython 函数声明是多么灵活。
sql=sqlTemplate % args 使用基于字典的 SQL 字符串格式化,我们在 select2.jy 中已经了解。
结束语
本文中,我们展示了一些简单示例,可作为开发人员进行探索的起点。我们相信在继续探索时,还会有更多益处和问题。
此外,Jython 得益于与巨大 Java 库以及诸如 IBM DB2 JDBC 驱动程序这样的 API 的无缝集成。基于其语言特征,Jython 非常适合于自动化测试和加载测试等任务,这些任务都需要快速的应用程序开发。正如 Charming Jython中所描述的,“Jython 绝不是要您抛弃 Java 语言。Jython 会是一个非常方便的补充,对于快速检查和构造原型、测试以及处理那些比较适合使用其方法的编码任务是很有用的。”
本文示例源代码或素材下载
更多精彩
赞助商链接