在一个工程中,使用了jdbc加上oracle的jdbc驱动完成了访问oracle(8或者9)数据库的部分,由于需要保露c++、c的接口所以业务逻辑采用从c++编写。
在经历了一番摸索后,还是有一个很苦恼的问题的困扰我,还是先把代码粘上来,
1.5 JDK
java:public int ChangeConnection(String IPString, String PortString, String DBName, String UserName, String Pwd)
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
thin_con = DriverManager.getConnection(connectionString, UserName, Pwd);
///OUT
stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rel_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
list_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
upDate_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
connectionString = recorder;
return 1;
} catch (Exception e) {
err = e.toString();
System.out.println(err);
return -1;
}
}c++:
获取jni,或者attach一个jni,然后调用以上的方法。出现的问题就是,在vc中完全编译后,启动会成功过去,但是去bin目录下面,启动生成的exe文件就会有可能出现访问冲突的错误,直接退出程序,而且有时候是直接在bin目录中启动exe就是正常的,启动几次后会出现同样的错误,但是只要在vc中启动,只要第一次是正确的,就永远是正确的,无论多少次,而且,当bin/exe启动失败后,vc的也将永远的启动失败,即使是debug模式也错误,只有重新的完全编译,而且完全编译后的bin/exe也不能保证会正确,或者永远正确,有个幸运的版本可以永远正确,可是当拷贝给同事的时候又出现同样的错误了。
后来验证是在java代码中的OUT前的那条语句出错的。之间都是好好的。
具体的错误如下(有点长),敬请专家指教:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d6c8b19, pid=1188, tid=848
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_01-b08 mixed mode, sharing)
# Problematic frame:
# V [jvm.dll+0x88b19]
#--------------- T H R E A D ---------------Current thread (0x00a13580): JavaThread "main" [_thread_in_vm, id=848]siginfo: ExceptionCode=0xc0000005, reading address 0x0099f000Registers:
EAX=0x00000006, EBX=0x0012f630, ECX=0x0099f000, EDX=0x2b416138
ESP=0x0012f368, EBP=0x0012f37c, ESI=0x00000052, EDI=0x00a13580
EIP=0x6d6c8b19, EFLAGS=0x00010246Top of Stack: (sp=0x0012f368)
0x0012f368: 0000048c 00a1363c 0099f000 0012f384
0x0012f378: 0012f384 0012f5e0 6d4c5973 00a13580
0x0012f388: 0099f000 00000052 0012f630 00a13580
0x0012f398: 2ad4cfe0 2b641e50 0012f618 0012f538
0x0012f3a8: 00a13580 00a13140 00a14c00 00a14c3c
0x0012f3b8: 00a14ff4 0012fc20 0012f540 01457510
0x0012f3c8: 0012f40c 6d71481d 0000000b 00000000
0x0012f3d8: 0012f474 00000000 00a14c20 00a13580 Instructions: (pc=0x6d6c8b19)
0x6d6c8b09: 7d 08 e8 96 7a fb ff 8b 4d 0c 8b 75 10 8b 5d 14
0x6d6c8b19: 8b 01 c1 ee 02 83 3d d8 69 7a 6d 00 8b 50 04 74
Stack: [0x00030000,0x00130000), sp=0x0012f368, free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x88b19]
C [net.dll+0x5973]
j java.net.PlainSocketImpl.socketConnect(Ljava/net/InetAddress;II)V+0
j java.net.PlainSocketImpl.doConnect(Ljava/net/InetAddress;II)V+10
j java.net.PlainSocketImpl.connectToAddress(Ljava/net/InetAddress;II)V+23
j java.net.PlainSocketImpl.connect(Ljava/net/SocketAddress;I)V+71
j java.net.SocksSocketImpl.connect(Ljava/net/SocketAddress;I)V+332
j java.net.Socket.connect(Ljava/net/SocketAddress;I)V+165
j java.net.Socket.connect(Ljava/net/SocketAddress;)V+3
j java.net.Socket.<init>(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Z)V+95
j java.net.Socket.<init>(Ljava/lang/String;I)V+38
j oracle.net.nt.TcpNTAdapter.connect()V+13
j oracle.net.nt.ConnOption.connect()V+12
j oracle.net.nt.ConnStrategy.execute()Loracle/net/nt/ConnOption;+24
j oracle.net.resolver.AddrResolution.resolveAndExecute(Ljava/lang/String;)Loracle/net/nt/ConnOption;+91
j oracle.net.ns.NSProtocol.establishConnection(Ljava/lang/String;)Loracle/net/ns/SessionAtts;+9
j oracle.net.ns.NSProtocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+127
j oracle.jdbc.ttc7.TTC7Protocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+31
j oracle.jdbc.ttc7.TTC7Protocol.logon(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Loracle/jdbc/dbaccess/DBConversion;+58
j oracle.jdbc.driver.OracleConnection.<init>(Loracle/jdbc/dbaccess/DBAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)V+246
j oracle.jdbc.driver.OracleDriver.getConnectionInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+352
j oracle.jdbc.driver.OracleDriver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+522
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;+165
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;+41
j DiscoverUser.ChangeConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+289
v ~StubRoutines::call_stub
V [jvm.dll+0x8176e]
V [jvm.dll+0xd481d]
V [jvm.dll+0x8163f]
V [jvm.dll+0x86429]
C [discover.dll+0x2ee3a]
C [discover.dll+0x2e6ce]
C [discover.dll+0x4a8c]
C [DiscoverSTest.exe+0x109a]
C [DiscoverSTest.exe+0x1d59]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j java.net.PlainSocketImpl.socketConnect(Ljava/net/InetAddress;II)V+0
j java.net.PlainSocketImpl.doConnect(Ljava/net/InetAddress;II)V+10
j java.net.PlainSocketImpl.connectToAddress(Ljava/net/InetAddress;II)V+23
j java.net.PlainSocketImpl.connect(Ljava/net/SocketAddress;I)V+71
j java.net.SocksSocketImpl.connect(Ljava/net/SocketAddress;I)V+332
j java.net.Socket.connect(Ljava/net/SocketAddress;I)V+165
j java.net.Socket.connect(Ljava/net/SocketAddress;)V+3
j java.net.Socket.<init>(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Z)V+95
j java.net.Socket.<init>(Ljava/lang/String;I)V+38
j oracle.net.nt.TcpNTAdapter.connect()V+13
j oracle.net.nt.ConnOption.connect()V+12
j oracle.net.nt.ConnStrategy.execute()Loracle/net/nt/ConnOption;+24
j oracle.net.resolver.AddrResolution.resolveAndExecute(Ljava/lang/String;)Loracle/net/nt/ConnOption;+91
j oracle.net.ns.NSProtocol.establishConnection(Ljava/lang/String;)Loracle/net/ns/SessionAtts;+9
j oracle.net.ns.NSProtocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+127
j oracle.jdbc.ttc7.TTC7Protocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+31
j oracle.jdbc.ttc7.TTC7Protocol.logon(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Loracle/jdbc/dbaccess/DBConversion;+58
j oracle.jdbc.driver.OracleConnection.<init>(Loracle/jdbc/dbaccess/DBAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)V+246
j oracle.jdbc.driver.OracleDriver.getConnectionInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+352
j oracle.jdbc.driver.OracleDriver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+522
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;+165
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;+41
j DiscoverUser.ChangeConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+289
v ~StubRoutines::call_stub
在经历了一番摸索后,还是有一个很苦恼的问题的困扰我,还是先把代码粘上来,
1.5 JDK
java:public int ChangeConnection(String IPString, String PortString, String DBName, String UserName, String Pwd)
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
thin_con = DriverManager.getConnection(connectionString, UserName, Pwd);
///OUT
stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rel_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
list_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
upDate_stmt = thin_con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
connectionString = recorder;
return 1;
} catch (Exception e) {
err = e.toString();
System.out.println(err);
return -1;
}
}c++:
获取jni,或者attach一个jni,然后调用以上的方法。出现的问题就是,在vc中完全编译后,启动会成功过去,但是去bin目录下面,启动生成的exe文件就会有可能出现访问冲突的错误,直接退出程序,而且有时候是直接在bin目录中启动exe就是正常的,启动几次后会出现同样的错误,但是只要在vc中启动,只要第一次是正确的,就永远是正确的,无论多少次,而且,当bin/exe启动失败后,vc的也将永远的启动失败,即使是debug模式也错误,只有重新的完全编译,而且完全编译后的bin/exe也不能保证会正确,或者永远正确,有个幸运的版本可以永远正确,可是当拷贝给同事的时候又出现同样的错误了。
后来验证是在java代码中的OUT前的那条语句出错的。之间都是好好的。
具体的错误如下(有点长),敬请专家指教:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d6c8b19, pid=1188, tid=848
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_01-b08 mixed mode, sharing)
# Problematic frame:
# V [jvm.dll+0x88b19]
#--------------- T H R E A D ---------------Current thread (0x00a13580): JavaThread "main" [_thread_in_vm, id=848]siginfo: ExceptionCode=0xc0000005, reading address 0x0099f000Registers:
EAX=0x00000006, EBX=0x0012f630, ECX=0x0099f000, EDX=0x2b416138
ESP=0x0012f368, EBP=0x0012f37c, ESI=0x00000052, EDI=0x00a13580
EIP=0x6d6c8b19, EFLAGS=0x00010246Top of Stack: (sp=0x0012f368)
0x0012f368: 0000048c 00a1363c 0099f000 0012f384
0x0012f378: 0012f384 0012f5e0 6d4c5973 00a13580
0x0012f388: 0099f000 00000052 0012f630 00a13580
0x0012f398: 2ad4cfe0 2b641e50 0012f618 0012f538
0x0012f3a8: 00a13580 00a13140 00a14c00 00a14c3c
0x0012f3b8: 00a14ff4 0012fc20 0012f540 01457510
0x0012f3c8: 0012f40c 6d71481d 0000000b 00000000
0x0012f3d8: 0012f474 00000000 00a14c20 00a13580 Instructions: (pc=0x6d6c8b19)
0x6d6c8b09: 7d 08 e8 96 7a fb ff 8b 4d 0c 8b 75 10 8b 5d 14
0x6d6c8b19: 8b 01 c1 ee 02 83 3d d8 69 7a 6d 00 8b 50 04 74
Stack: [0x00030000,0x00130000), sp=0x0012f368, free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x88b19]
C [net.dll+0x5973]
j java.net.PlainSocketImpl.socketConnect(Ljava/net/InetAddress;II)V+0
j java.net.PlainSocketImpl.doConnect(Ljava/net/InetAddress;II)V+10
j java.net.PlainSocketImpl.connectToAddress(Ljava/net/InetAddress;II)V+23
j java.net.PlainSocketImpl.connect(Ljava/net/SocketAddress;I)V+71
j java.net.SocksSocketImpl.connect(Ljava/net/SocketAddress;I)V+332
j java.net.Socket.connect(Ljava/net/SocketAddress;I)V+165
j java.net.Socket.connect(Ljava/net/SocketAddress;)V+3
j java.net.Socket.<init>(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Z)V+95
j java.net.Socket.<init>(Ljava/lang/String;I)V+38
j oracle.net.nt.TcpNTAdapter.connect()V+13
j oracle.net.nt.ConnOption.connect()V+12
j oracle.net.nt.ConnStrategy.execute()Loracle/net/nt/ConnOption;+24
j oracle.net.resolver.AddrResolution.resolveAndExecute(Ljava/lang/String;)Loracle/net/nt/ConnOption;+91
j oracle.net.ns.NSProtocol.establishConnection(Ljava/lang/String;)Loracle/net/ns/SessionAtts;+9
j oracle.net.ns.NSProtocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+127
j oracle.jdbc.ttc7.TTC7Protocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+31
j oracle.jdbc.ttc7.TTC7Protocol.logon(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Loracle/jdbc/dbaccess/DBConversion;+58
j oracle.jdbc.driver.OracleConnection.<init>(Loracle/jdbc/dbaccess/DBAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)V+246
j oracle.jdbc.driver.OracleDriver.getConnectionInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+352
j oracle.jdbc.driver.OracleDriver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+522
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;+165
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;+41
j DiscoverUser.ChangeConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+289
v ~StubRoutines::call_stub
V [jvm.dll+0x8176e]
V [jvm.dll+0xd481d]
V [jvm.dll+0x8163f]
V [jvm.dll+0x86429]
C [discover.dll+0x2ee3a]
C [discover.dll+0x2e6ce]
C [discover.dll+0x4a8c]
C [DiscoverSTest.exe+0x109a]
C [DiscoverSTest.exe+0x1d59]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j java.net.PlainSocketImpl.socketConnect(Ljava/net/InetAddress;II)V+0
j java.net.PlainSocketImpl.doConnect(Ljava/net/InetAddress;II)V+10
j java.net.PlainSocketImpl.connectToAddress(Ljava/net/InetAddress;II)V+23
j java.net.PlainSocketImpl.connect(Ljava/net/SocketAddress;I)V+71
j java.net.SocksSocketImpl.connect(Ljava/net/SocketAddress;I)V+332
j java.net.Socket.connect(Ljava/net/SocketAddress;I)V+165
j java.net.Socket.connect(Ljava/net/SocketAddress;)V+3
j java.net.Socket.<init>(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Z)V+95
j java.net.Socket.<init>(Ljava/lang/String;I)V+38
j oracle.net.nt.TcpNTAdapter.connect()V+13
j oracle.net.nt.ConnOption.connect()V+12
j oracle.net.nt.ConnStrategy.execute()Loracle/net/nt/ConnOption;+24
j oracle.net.resolver.AddrResolution.resolveAndExecute(Ljava/lang/String;)Loracle/net/nt/ConnOption;+91
j oracle.net.ns.NSProtocol.establishConnection(Ljava/lang/String;)Loracle/net/ns/SessionAtts;+9
j oracle.net.ns.NSProtocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+127
j oracle.jdbc.ttc7.TTC7Protocol.connect(Ljava/lang/String;Ljava/util/Properties;)V+31
j oracle.jdbc.ttc7.TTC7Protocol.logon(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Loracle/jdbc/dbaccess/DBConversion;+58
j oracle.jdbc.driver.OracleConnection.<init>(Loracle/jdbc/dbaccess/DBAccess;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)V+246
j oracle.jdbc.driver.OracleDriver.getConnectionInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+352
j oracle.jdbc.driver.OracleDriver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+522
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;+165
j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;+41
j DiscoverUser.ChangeConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+289
v ~StubRoutines::call_stub
0x00a21b70 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3244]
0x00a1f310 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4076]
0x00a1e170 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3544]
0x00a1d4c0 JavaThread "Finalizer" daemon [_thread_blocked, id=3296]
0x00a1c1b0 JavaThread "Reference Handler" daemon [_thread_blocked, id=3284]
=>0x00a13580 JavaThread "main" [_thread_in_vm, id=848]Other Threads:
0x00a1b370 VMThread [id=1000]
0x00a226a0 WatcherThread [id=804]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
def new generation total 576K, used 544K [0x22bd0000, 0x22c70000, 0x230b0000)
eden space 512K, 93% used [0x22bd0000, 0x22c48320, 0x22c50000)
from space 64K, 100% used [0x22c60000, 0x22c70000, 0x22c70000)
to space 64K, 0% used [0x22c50000, 0x22c50000, 0x22c60000)
tenured generation total 1408K, used 71K [0x230b0000, 0x23210000, 0x26bd0000)
the space 1408K, 5% used [0x230b0000, 0x230c1dc0, 0x230c1e00, 0x23210000)
compacting perm gen total 8192K, used 963K [0x26bd0000, 0x273d0000, 0x2abd0000)
the space 8192K, 11% used [0x26bd0000, 0x26cc0d88, 0x26cc0e00, 0x273d0000)
ro space 8192K, 62% used [0x2abd0000, 0x2b0d7d30, 0x2b0d7e00, 0x2b3d0000)
rw space 12288K, 46% used [0x2b3d0000, 0x2b95c8a0, 0x2b95ca00, 0x2bfd0000)Dynamic libraries:
0x00400000 - 0x0042b000 F:\Discovery1.0\ServiceDiscover_ForSys20070831\bin\DiscoverSTest.exe
0x7c920000 - 0x7c9b4000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91c000 C:\WINDOWS\system32\kernel32.dll
0x10000000 - 0x10094000 F:\Discovery1.0\ServiceDiscover_ForSys20070831\bin\discover.dll
0x00370000 - 0x003a3000 F:\Discovery1.0\ServiceDiscover_ForSys20070831\bin\ArrayDLL.dll
0x6d640000 - 0x6d7c5000 C:\Program Files\Java\jre1.5.0_01\bin\client\jvm.dll
0x77d10000 - 0x77d9f000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f36000 C:\WINDOWS\system32\GDI32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee1000 C:\WINDOWS\system32\RPCRT4.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\MSVCRT.dll
0x76990000 - 0x76acc000 C:\WINDOWS\system32\ole32.dll
0x770f0000 - 0x7717c000 C:\WINDOWS\system32\OLEAUT32.dll
0x71a20000 - 0x71a37000 C:\WINDOWS\system32\WS2_32.dll
0x71a10000 - 0x71a18000 C:\WINDOWS\system32\WS2HELP.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x5adc0000 - 0x5adf7000 C:\WINDOWS\system32\uxtheme.dll
0x74680000 - 0x746cb000 C:\WINDOWS\system32\MSCTF.dll
0x71a90000 - 0x71aa2000 C:\WINDOWS\system32\mpr.dll
0x61410000 - 0x61534000 C:\WINDOWS\system32\urlmon.dll
0x77f40000 - 0x77fb6000 C:\WINDOWS\system32\SHLWAPI.dll
0x5dca0000 - 0x5dce5000 C:\WINDOWS\system32\iertutil.dll
0x77180000 - 0x77282000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
0x00e00000 - 0x00ece000 C:\WINDOWS\system32\wininet.dll
0x00dc0000 - 0x00dc9000 C:\WINDOWS\system32\Normaliz.dll
0x6d280000 - 0x6d288000 C:\Program Files\Java\jre1.5.0_01\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d610000 - 0x6d61c000 C:\Program Files\Java\jre1.5.0_01\bin\verify.dll
0x6d300000 - 0x6d31d000 C:\Program Files\Java\jre1.5.0_01\bin\java.dll
0x6d630000 - 0x6d63f000 C:\Program Files\Java\jre1.5.0_01\bin\zip.dll
0x6d4c0000 - 0x6d4d3000 C:\Program Files\Java\jre1.5.0_01\bin\net.dll
0x03d60000 - 0x03d66000 C:\Program Files\Baidu\Disk Search\DiskSearchServiceStub.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x719c0000 - 0x719fe000 C:\WINDOWS\system32\mswsock.dll
0x60fd0000 - 0x61025000 C:\WINDOWS\system32\hnetcfg.dll
0x71a00000 - 0x71a08000 C:\WINDOWS\System32\wshtcpip.dll
0x76ef0000 - 0x76f17000 C:\WINDOWS\system32\DNSAPI.dll
0x03db0000 - 0x03dc8000 C:\Program Files\Kaspersky Lab\Kaspersky Internet Security 7.0\dnsq.dll
0x76d30000 - 0x76d48000 C:\WINDOWS\system32\iphlpapi.dll
0x76f80000 - 0x76f88000 C:\WINDOWS\System32\winrnr.dll
0x76f30000 - 0x76f5c000 C:\WINDOWS\system32\WLDAP32.dll
0x03e10000 - 0x03e27000 C:\Program Files\Kaspersky Lab\Kaspersky Internet Security 7.0\miscr3.dll
0x76f90000 - 0x76f96000 C:\WINDOWS\system32\rasadhlp.dll
0x773a0000 - 0x77b91000 C:\WINDOWS\system32\SHELL32.dll
0x5d170000 - 0x5d207000 C:\WINDOWS\system32\comctl32.dllVM Arguments:
jvm_args: -Djavacompiler = NONE
java_command: <unknown>Environment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_01
CLASSPATH=C:\mule133\lib\boot\mule-module-boot.jar;C:\mule133\lib\user;
PATH=E:\oracle\ora81\bin;C:\Program Files\Oracle\jre\1.1.7\bin;C:\Program Files\Java\jdk1.5.0_01\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Rational\common;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\mule133\bin;C:\maven-2.0.6\bin;D:\ZHXT\GISII\bin;<DEFAULTINSTALLPATH>\BIN;C:\Program Files\Java\jre1.5.0_01\bin\client;D:\internet28\tool\SysinternalsSuite;C:\Program Files\Java\jdk1.5.0_01\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;D:\Program Files\BCGSoft\BCGControlBarPro\Bin;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\mule133\bin;D:\ZHXT\GISII\bin;D:\ZHXT\MGSII\bin
USERNAME=lrq-506
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
--------------- S Y S T E M ---------------OS: Windows XP Build 2600 Service Pack 2CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, htMemory: 4k page, physical 1048008k(267868k free), swap 4093808k(3109212k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_01-b08) for windows-x86, built on Dec 6 2004 19:51:00 by "java_re" with MS VC++ 6.0
问题是目前已经是采用了java的数据访问,同时上层需要提供c/c++的接口,那还有什么其他的调用方式?