日期:2014-05-18  浏览次数:20608 次

Java使用JDBC操作Oracle数据库遇到的两个问题,求解
本帖最后由 Rabsia 于 2013-07-24 18:28:22 编辑
第一个问题是这样的:

Linux系统,JDK1.4编译的Jar包,在1.5的环境中运行,oracle数据库版本是10g,jdbc驱动版本是ojdbc14

代码中只要使用PrepareStatement的绑定变量功能,就会出错,类似这种代码:
String umid = "0-1";
String s = "DELETE FROM TZ_EXPORT_SQL WHERE ROW_ID = ?";
PreparedStatement stmt = conn.prepareStatement(s);
stmt.setString(1, umid);
stmt.executeUpdate();

而把绑定变量换成直接拼字符串的形式就运行正常

报错抓到的错误日志如下:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGSEGV (0xb) at pc=0xfe992c24, pid=22771, tid=1
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0_18-b02 mixed mode)
# Problematic frame:
# V  [libjvm.so+0x192c24]
#

---------------  T H R E A D  ---------------

Current thread (0x000367b8):  JavaThread "main" [_thread_in_vm, id=1]

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00000000

Registers:
 O0=0x00007794 O1=0x00007400 O2=0x80000000 O3=0x00000006
 O4=0xff032f1c O5=0x00008000 O6=0xffbfe5e8 O7=0x00009628
 G1=0x0000941c G2=0x00009400 G3=0x00009400 G4=0x00000000
 G5=0xff036fb8 G6=0x5387b38f G7=0xff362a00 Y=0x00000000
 PC=0xfe992c24 nPC=0xfe992c28


Top of Stack: (sp=0xffbfe5e8)
0xffbfe5e8:   ff032f18 00000000 fefde000 725f725f
0xffbfe5f8:   00001ffc 00000001 ff032f20 0000835c
0xffbfe608:   ff027754 00000000 00000000 725f725f
0xffbfe618:   005e48c8 000367b8 ffbfe648 fadd7e0c
0xffbfe628:   1b22638c 0048bc78 00000004 00000004
0xffbfe638:   1b226390 1b22639c ffbfe648 fadd7dd0
0xffbfe648:   0000fc00 00000000 00000005 a864a864
0xffbfe658:   00000000 00000014 fe992ad4 00000004 

Instructions: (pc=0xfe992c24)
0xfe992c14:   06 40 00 4c b6 90 00 1b 06 40 00 4a a6 06 80 1b
0xfe992c24:   e0 06 60 00 e8 04 20 08 80 a4 c0 14 18 40 00 45 

Stack: [0xffb80000,0xffc00000),  sp=0xffbfe5e8,  free space=505k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)