由连接方法造成的JRE检测到致命错误
问题描述:
当执行此操作时,我的程序第二次执行此循环时遇到致命错误,循环执行此语句Statement stmt = conn.createStatement();
。这是什么造成的?不允许通过方法传递连接吗?该程序通过这个循环运行:由连接方法造成的JRE检测到致命错误
Connection conn = open_connection();
for(int aa = 0;aa<symbols.length;aa++){
String[][] dub_array = parse(symbols[aa]);
autowave(dub_array,19,14,symbols[aa],conn);
}
OPEN_CONNECTION看起来是这样的:
public static Connection open_connection() throws Exception{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String sDBQ = "C:/Documents and Settings/mike/Desktop/stock/data/AW.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + sDBQ + ";DriverID=22;READONLY=false";
Connection conn = DriverManager.getConnection(database ,"","");
return conn;
}
以下是错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c90100b, pid=3584, tid=8668
#
# JRE version: 7.0_02-b13
# Java VM: Java HotSpot(TM) Client VM (22.0-b10 mixed mode, sharing windows-x86)
# Problematic frame:
# C [ntdll.dll+0x100b]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Documents and Settings\mike\Desktop\stock\stock\hs_err_pid3584.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
答
My program is encountering a fatal error when executing this like a second time a loop executes this statement Statement stmt = conn.createStatement(); autowave(dub_array,19,14,symbols[aa],conn); Try to create only one statement object before loop, then use it in loop. JdbcOdbcDriver with MS Access is lame and will meet unexpected issue sometimes.
你使用Vista/Windows 7的? – kosa 2012-01-30 19:04:05
@thinksteep no,XP – Mike 2012-01-30 22:03:46
Vista/Windows似乎存在已知问题。检查此链接是否有帮助http://java.com/en/download/help/exception_access.xml – kosa 2012-01-30 22:12:42