求教JFinal如何连接Informix数据库

求教JFinal如何连接Informix数据库,第1张

打开DbVisualizer软件,点击"Tools"菜单,选择"Connection wizard"选项,进入配置窗口"New Connection Wizard"

在"New Connection Wizard"窗口中,输入一个连接名称,可随意取名,之后点击"Next"

在"Select Database Driver"驱动选择步骤中选择Informix驱动,前提是在DbVisualizer安装目录下的lib目录有ifxjdbc.jar驱动包,没有可在网上下载。点击"Next"

在主设置界面设置数据库信息。从上至下依次为:

Database Userid 数据库连接名,必须设置

Database Passwoed 数据库连接密码,必须设置

Database Server数据库服务器IP,必须设置

Database Port 数据库服务器端口,必须设置

Database 数据库名,必须设置

Database Server数据库实例名,必须设置

在上一步的设置窗口中,点击"Ping Server"按钮,测试是否能ping通数据库服务器,测试通过则点击"Finish"完成按钮,失败则检查配置情况

6

配置通过后,在主界面的右侧则会显示出配置的连接,右键选择"Connect"则可连接到配置的数据库

-1829 Cannot open file citoxmsg.pam.

The file citoxmsg.pam is missing from the directory $INFORMIXDIR/msg.

检查一下INFORMIXDIR环境变量是否正确、$INFORMIXDIR/msg/citoxmsg.pam文件是否存在、权限是否正确

2、通过XA接口互连。本文介绍这种互连的配置方法。 以上两种连接方式的区别: 采用XA的方式,你的应用中需要使用到全局事务,如果你的应用需要在一个事务中去更新两个或两个以上的数据库,并保证该事务的一致性。使用tuxedo的XA提供的全局事务最好。如果一个数据库,可以不使用XA,事务由自己控制。因为NON-XA比XA的效率高! 但是不使用XA也可以连接数据库的时候,把db connect 放到tpsvrinit中,db shutdown 放到tpsvrdone中。也就是在tmboot就连接到数据库上。tmshutdown时候就db disconnect 数据库了。 在.profile中除了INFORMIXDIR,INFORMIXSERVER,PATH,SHLIB_PATH之外,还要写以下内容:CFLAGS="-I$INFORMIXDIR/incl -I$INFORMIXDIR/incl/esql" export CFLAGSLANG=CTUXCONFIGTUXDIR 3. 将TUXEDO/udataobj目录下的RM文件,加入:INFORMIX-DSHC:infx_xa_switch:-L/tuxedo/lib -L${INFORMIXDIR}/lib -L${INFORMIXDIR}/lib/esql -lifxa -lifsql -lifasf -lifgen -lifos -lifgls -lnsl -lm -lsec ${INFORMIXDIR}/lib/esql/checkapi.o -lifglx 4. 在TUXEDO用户下创建TMS文件:TMS_INF,TUXEDO通过TMS_INF与INFORMIX数据库采用XA协议进行通讯buildtms -r INFORMIX-DSHC -o /tuxedo/bin/TMS_INFORMIX 5. 配置 UBBCONFIG1.在*MACHINES节中增加:(若不使用XA接口可以不增加TLOG)TLOGDEVICE = "/usr/tuxedo/simpdb/TLOG"TLOGNAME=TLOGTLOGSIZE=2002. 改*GROUPS节的配置为:*GROUPSGROUP1 LMID=simple GRPNO=1TMSNAME="TMS_INFORMIX" TMSCOUNT=2 OPENINFO="INFORMIX-DSHC:mydb"修改后的配置文件UBBCONFIG内容如下,用tmloadcf -y UBBCONFIG重新生成tuxconfigIPCKEY 123456 ( 可以输入任意的一个序列数)DOMAINID simpappMASTER simpleMAXACCESSERS 100MAXSERVERS 50MAXSERVICES 100MODEL SHMLDBAL N *MACHINESserver LMID=simpleAPPDIR="/usr/tuxedo/simpdb"TUXCONFIG="/usr/tuxedo/simpdb/tuxconfig"TUXDIR="/usr/tuxedo"TLOGDEVICE = "/usr/tuxedo/simpdb/TLOG"TLOGNAME=TLOGTLOGSIZE=100*GROUPSGROUP1 LMID=simple GRPNO=1TMSNAME="TMS_INF" TMSCOUNT=2 OPENINFO="INFORMIX-DSHC:mydb"*SERVERSDEFAULT:CLOPT="-A"test SRVGRP=GROUP1 SRVID=1*SERVICES 6.用TMADMIN创建TLOG文件,TUXEDO用一个文件TLOG记录对数据库 *** 作的日志。用于协调分布式数据库的提交与回滚.(若没有使用XA,可以省略此步骤) D:\>tmadmin>crdl -b 500 -z /usr/tuxedo/simpdb/TLOG>crlog -m simple>q 三、服务端的程序(见demo目录):test.cp 功能:根据客户端传的EMPNO到表EMP中取ENAME的值,并把它返回给客户端#include <atmi.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sybhesql.h>#include <sybtesql.h>EXEC SQL INCLUDE sqlcaEXEC SQL BEGIN DECLARE SECTIONlong al_empno=0char ac_ename[11]=""EXEC SQL END DECLARE SECTIONTEST(TPSVCINFO *rqst){ /*接收客户端来的数据*/al_empno = (FBFR32 *)rqst->dataEXEC SQL select ename into :ac_ename from EMP where empno=:al_empnoif(sqlca.sqlcode!=0){ userlog("select from EMP failure,sqlca.sqlcode=%ld\n",sqlca.sqlcode)tpreturn( TPFAIL, 0, rqst->data, 0, 0 )}/*把取出的结果返回给客户端*/strcpy(rqst->data,ac_ename)tpreturn( TPSUCCESS, 0, rqst->data, 0, 0 )} 四、编写客户端程序(见Demo目录): testcli.c功能:调用TUXEDO服务端的服务TEST,取EMPNO=420000所对应的ENAME的值,并显示出来#include <stdio.h>#include "atmi.h" main(argc, argv){long reqlen=1024char *reqbuf/* 与TUXEDO服务端建立连接 */if (tpinit((TPINIT *) NULL) == -1){(void) fprintf(stderr, "Tpinit failed\n")exit(1)}/* 分配发送缓冲区*/reqbuf = (char *)tpalloc("STRING",NULL,reqlen)if ( reqbuf == (char *)NULL){printf("tpalloc failed\n")tpterm()}strcpy(reqbuf,"1000")/*调用TUXEDO的服务TEST*/if (tpcall("TEST", (char *)reqbuf, 0L, (char **)&reqbuf, (long *)&reqlen, 0<0 ){printf("tpcall failed,tperrno=%ld,tperrtext=%s\n",tperrno,tpstrerror(tperrno))tpfree(reqbuf)tpterm()exit(1)}printf("name=%s\n",reqbuf)tpfree(reqbuf)tpterm()return(0)} 五、编译服务端程序1.用INFORMIX的esql把test.pc 文件预编译成test.c文件/usr/tuxedo/simpdb/esql -c test.pc -I$INFORMIXDIR/incl/esql 2.用buildserver把test.c编译成可执行文件,注意-r 后带的INFORMIX-DSHC与RM文件中的一致。/usr/tuxedo/simpdb/buildserver -o simpserv -f simpserver.c -r INFORMIX-DSHC -s TEST 六、编译客户端程序/usr/tuxedo/simpdb/buildclient -o testcli -f testcli.c 七、用 tmboot -y 启动TUXEDO,应能看到所有的SERVER都启动成功.这时,我们的服务端程序test 会自动与INFORMIX数据库建立连接,并一直保持这个连接,直到TUXEDO系统或INFORMIX数据库关闭.所以在我们的程序test.cp中看不到与数据库连接的语句,因为现在与数据库的连接由TUXEDO自动管理./usr/tuxedo/simpdb/ tmboot -yexec TMS_INFORMIX -A :process id=1072 ... Started.exec TMS_INFORMIX -A :process id=528 ... Started.exec test -A :process id=876 ... Started. 八、运行客户端程序,应能看到服务端返回的结果/usr/tuxedo/simpdb/ testcliname=bill 到此,整个配置过程就大功告成了.INFORMIX的其他版本的配置及在其他 *** 作系统上的配置基本与本文所述差不多,差别主要在RM文件中所连的库文件可能会不样.使用esql -libs 命令得到应用所需的数据库动态连接库.再加上INFORMIX支持XA的库libinfxxa.a,注意在如果TMS_INF启动不成功,查看ULOG文件,根据ULOG文件的信息进行排错.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6696843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存