JDBC-ODBC bridge crash on Japanese NT
Hi,
My application, which runs off an access database, works fine on english versions of NT.
The database is accessed using the following URL syntax:
"jdbc:odbc:Driver={Microsoft Access Driver *.mdb)};DBQ=c:/application/app.mdb"
The application uses the internationalized version of the jre.
However, on Japanese NT machines, it crashes.
The stack trace is as follows:
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6d4488eb
Function name=(N/A)
Library=C:\dbapp\jre\jvm.dll
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.
Current Java thread:
at sun.jdbc.odbc.JdbcOdbc.driverConnect(Native Method)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.gp.dbapp.bologic.datasource.APPDBConnection.<init>(APPDBConnection.java:95)
at com.gp.dbapp.bologic.APPPersistentMgr.<clinit>(APPPersistentMgr.java:222)
at com.gp.rps.server.APPServer$StartServices.run(APPServer.java:792)
at java.lang.Thread.run(Unknown Source)
I would really appreciate feedback on what could be going wrong here.
Thanks in advance,
Vivek
Just a guess...instead of using the long name
c:/application/app.mdb
...use the 'short' name
Similar Messages
-
Help! Crashing JVM while doing SELECT statement through JDBC-ODBC bridge
Hi everyone,
Help please. I am working on a project on my own computer using the jdk version 1.5.0_04.
The project involves running a select on a Microsoft Access 2003 database via the JDBC-ODBC bridge. The database is registered in the ODBC database sources, and it works fine in those other projects.
Yet, when I'm running similar code in this project, it crashes the Java Virtual Machine. I get the following in a log file:
# An unexpected error has been detected by HotSpot Virtual Machine:
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c901010, pid=2308, tid=1364
# Java VM: Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode, sharing)
# Problematic frame:
# C [ntdll.dll+0x1010]
--------------- T H R E A D ---------------
Current thread (0x000360f8): JavaThread "main" [_thread_in_native, id=1364]
siginfo: ExceptionCode=0xc0000005, reading address 0x00000018
Registers:
EAX=0x00000004, EBX=0x26bb5250, ECX=0x7ffde000, EDX=0x00000004
ESP=0x0007f8d8, EBP=0x0007f8f0, ESI=0x00000000, EDI=0x02ea1590
EIP=0x7c901010, EFLAGS=0x00010246
Top of Stack: (sp=0x0007f8d8)
0x0007f8d8: 74355a16 00000004 02ea15b4 7432139f
0x0007f8e8: 02ea15b4 02ea1590 0007f900 74322c5d
0x0007f8f8: 02ea15b4 000361b4 0007f914 74325fa0
0x0007f908: 02ea1590 74350000 00390000 0007f930
0x0007f918: 7432740e 02ea1590 0007f950 00000003
0x0007f928: 00aabe20 000361b4 0007f948 6d3e11da
0x0007f938: 02ea1590 0007f950 000360f8 26bb5250
0x0007f948: 0007f980 00ad826f 00000000 0007f99c
Instructions: (pc=0x7c901010)
0x7c901000: 90 90 90 90 90 64 8b 0d 18 00 00 00 8b 54 24 04
0x7c901010: 83 7a 14 00 75 4f f0 ff 42 04 75 19 8b 41 24 89
Stack: [0x00040000,0x00080000), sp=0x0007f8d8, free space=254k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x1010]
C [ODBC32.dll+0x2c5d]
C [ODBC32.dll+0x5fa0]
C [ODBC32.dll+0x740e]
C [JdbcOdbc.dll+0x11da]
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement(II)Ljava/sql/Statement;+27
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement()Ljava/sql/Statement;+7
j LUDatabaseWorker.getBoxScoreFromDB(LStatisticalItems/BoxScore;)LStatisticalItems/BoxScore;+215
j NewUSCHOLiveUpdate.processTheBoxScores()V+78
j NewUSCHOLiveUpdate.main([Ljava/lang/String;)V+9
v ~StubRoutines::call_stub
V [jvm.dll+0x82696]
V [jvm.dll+0xd6fd9]
V [jvm.dll+0x82567]
V [jvm.dll+0x895e6]
C [java.exe+0x14c0]
C [java.exe+0x64cd]
C [kernel32.dll+0x16d4f]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.jdbc.odbc.JdbcOdbc.allocStmt(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(J)J+47
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement(II)Ljava/sql/Statement;+27
j sun.jdbc.odbc.JdbcOdbcConnection.createStatement()Ljava/sql/Statement;+7
j LUDatabaseWorker.getBoxScoreFromDB(LStatisticalItems/BoxScore;)LStatisticalItems/BoxScore;+215
j NewUSCHOLiveUpdate.processTheBoxScores()V+78
j NewUSCHOLiveUpdate.main([Ljava/lang/String;)V+9
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00a6e550 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2240]
0x00a6d258 JavaThread "CompilerThread0" daemon [_thread_blocked, id=736]
0x00a6c440 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2252]
0x00a47808 JavaThread "Finalizer" daemon [_thread_blocked, id=3352]
0x00a46328 JavaThread "Reference Handler" daemon [_thread_blocked, id=1560]
=>0x000360f8 JavaThread "main" [_thread_in_native, id=1364]
Other Threads:
0x00a67a68 VMThread [id=2700]
0x00a6f8c8 WatcherThread [id=2480]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 576K, used 404K [0x22b90000, 0x22c30000, 0x23070000)
eden space 512K, 70% used [0x22b90000, 0x22bea738, 0x22c10000)
from space 64K, 66% used [0x22c20000, 0x22c2a990, 0x22c30000)
to space 64K, 0% used [0x22c10000, 0x22c10000, 0x22c20000)
tenured generation total 1408K, used 846K [0x23070000, 0x231d0000, 0x26b90000)
the space 1408K, 60% used [0x23070000, 0x231438e0, 0x23143a00, 0x231d0000)
compacting perm gen total 8192K, used 507K [0x26b90000, 0x27390000, 0x2ab90000)
the space 8192K, 6% used [0x26b90000, 0x26c0ed38, 0x26c0ee00, 0x27390000)
ro space 8192K, 66% used [0x2ab90000, 0x2b0e9dc0, 0x2b0e9e00, 0x2b390000)
rw space 12288K, 46% used [0x2b390000, 0x2b927e98, 0x2b928000, 0x2bf90000)
Dynamic libraries:
0x00400000 - 0x0040c000 C:\jdk1.5.0_04\bin\java.exe
0x7c900000 - 0x7c9b0000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c8f4000 C:\WINDOWS\system32\kernel32.dll
0x77dd0000 - 0x77e6b000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e70000 - 0x77f01000 C:\WINDOWS\system32\RPCRT4.dll
0x77c10000 - 0x77c68000 C:\WINDOWS\system32\MSVCRT.dll
0x6d6b0000 - 0x6d839000 C:\jdk1.5.0_04\jre\bin\client\jvm.dll
0x77d40000 - 0x77dd0000 C:\WINDOWS\system32\USER32.dll
0x77f10000 - 0x77f56000 C:\WINDOWS\system32\GDI32.dll
0x76b40000 - 0x76b6d000 C:\WINDOWS\system32\WINMM.dll
0x629c0000 - 0x629c9000 C:\WINDOWS\system32\LPK.DLL
0x74d90000 - 0x74dfb000 C:\WINDOWS\system32\USP10.dll
0x6d2f0000 - 0x6d2f8000 C:\jdk1.5.0_04\jre\bin\hpi.dll
0x76bf0000 - 0x76bfb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d680000 - 0x6d68c000 C:\jdk1.5.0_04\jre\bin\verify.dll
0x6d370000 - 0x6d38d000 C:\jdk1.5.0_04\jre\bin\java.dll
0x6d6a0000 - 0x6d6af000 C:\jdk1.5.0_04\jre\bin\zip.dll
0x6d3e0000 - 0x6d3ed000 C:\jdk1.5.0_04\jre\bin\JdbcOdbc.dll
0x74320000 - 0x7435d000 C:\WINDOWS\system32\ODBC32.dll
0x5d090000 - 0x5d127000 C:\WINDOWS\system32\COMCTL32.dll
0x7c9c0000 - 0x7d1d5000 C:\WINDOWS\system32\SHELL32.dll
0x77f60000 - 0x77fd6000 C:\WINDOWS\system32\SHLWAPI.dll
0x763b0000 - 0x763f9000 C:\WINDOWS\system32\comdlg32.dll
0x773d0000 - 0x774d2000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
0x20000000 - 0x20017000 C:\WINDOWS\system32\odbcint.dll
0x774e0000 - 0x7761d000 C:\WINDOWS\system32\ole32.dll
0x77120000 - 0x771ac000 C:\WINDOWS\system32\OLEAUT32.dll
0x77fe0000 - 0x77ff1000 C:\WINDOWS\system32\Secur32.dll
0x76fd0000 - 0x7704f000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77050000 - 0x77115000 C:\WINDOWS\system32\COMRes.dll
0x77c00000 - 0x77c08000 C:\WINDOWS\system32\VERSION.dll
0x0f9a0000 - 0x0f9ab000 C:\WINDOWS\system32\VBAJET32.DLL
0x5ad70000 - 0x5ada8000 C:\WINDOWS\system32\uxtheme.dll
VM Arguments:
java_command: NewUSCHOLiveUpdate
Environment Variables:
JAVA_HOME=C:\jdk1.5.0_04
CLASSPATH=C:\jdk1.5.0_04\bin\NewLiveUpdate;C:\jdk1.5.0_04\bin\NewLiveUpdate\StatisticalItems;C:\jdk1.5.0_04\bin\NewLiveUpdate\Exceptions;C:\jdk1.5.0_04\bin\NewLiveUpdate\Helper;
PATH=C:\jdk1.5.0_04\bin;C:\JavaTools\ant\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;;c:\program files\devstudio\sharedide\bin\ide;c:\program files\devstudio\sharedide\bin;c:\program files\devstudio\vc\bin
USERNAME=Kevin Yetman
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 3, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows XP Build 2600 Service Pack 2
CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht
Memory: 4k page, physical 1047020k(627436k free), swap 2518436k(2161900k free)
vm_info: Java HotSpot(TM) Client VM (1.5.0_04-b05) for windows-x86, built on Jun 3 2005 02:10:41 by "java_re" with MS VC++ 6.0
The code that is causing the problem is in the class shown below. It is in the method getBoxScoreFromDB. When it attempts to run the first select statement, it causes the crash that I showed above.
The connection is set up by the calling class. The calling class constructs a LUDatabaseWorker, sets the necessary parameters (dbURL, driver class, username and password), and calls the openDBConnection().
// LUDatabaseWorker.java
import StatisticalItems.*;
import java.sql.*;
import java.util.*;
public class LUDatabaseWorker
private StatisticalItems.BoxScore m_CurrentBoxScoreInDB;
private Connection m_Connection;
private String m_dbURL;
private String m_dbUsername;
private String m_dbPassword;
private String m_dbDriverClass;
public LUDatabaseWorker()
public StatisticalItems.BoxScore getCurrentBoxScoreInDB()
{ return m_CurrentBoxScoreInDB;
public void setDBURL(String dbURL)
{ m_dbURL=new String(dbURL);
public void setDBUsername(String dbUsername)
{ m_dbUsername=new String(dbUsername);
public void setDBPassword(String dbPassword)
{ m_dbPassword=new String(dbPassword);
public void setDBDriverClass(String dbDriverClass)
{ m_dbDriverClass=new String(dbDriverClass);
public void openDBConnection()
throws SQLException, ClassNotFoundException
Class.forName(m_dbDriverClass);
m_Connection=DriverManager.getConnection(m_dbURL, m_dbUsername, m_dbPassword);
public void closeDBConnection()
throws SQLException
m_Connection.close();
public Hashtable<String, Integer> getUSCHOCodeToMyTeamIndexMap()
throws SQLException
Hashtable<String, Integer> ht=new Hashtable<String, Integer>();
String sqlQuery="SELECT TeamIndex, TeamCode FROM TeamLiveUpdateUSCHO";
Statement st=m_Connection.createStatement();
ResultSet rs=st.executeQuery(sqlQuery);
while(rs.next())
String uschoCode=new String(rs.getString(2));
Integer myTeamIndex=new Integer(rs.getInt(1));
ht.put(uschoCode, myTeamIndex);
rs.close();
st.close();
return ht;
public StatisticalItems.BoxScore getBoxScoreFromDB(StatisticalItems.BoxScore luBoxScore)
throws SQLException
StatisticalItems.BoxScore boxScoreFromDB=new StatisticalItems.BoxScore();
// get the basic game info from the live update box score.
StatisticalItems.Game luBasicGameData=luBoxScore.getBasicGameData();
// get the basic game data.
String sqlQuery="SELECT * FROM Game WHERE (Year=" + luBasicGameData.getYear() + ") AND (Month='";
if( luBasicGameData.getMonth() < 10 )
{ sqlQuery+="0";
sqlQuery+=luBasicGameData.getMonth() + "') AND (Day='";
if( luBasicGameData.getDay() < 10 )
{ sqlQuery+="0";
sqlQuery+=luBasicGameData.getDay() + "') AND (HomeTeamIndex=" + luBasicGameData.getHomeTeamIndex();
sqlQuery+=") AND (VisitorTeamIndex=" + luBasicGameData.getVisitorTeamIndex() + ")";
System.out.println(sqlQuery);
Statement st=m_Connection.createStatement();
ResultSet rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.Game dbGame=boxScoreFromDB.getBasicGameData();
dbGame.setGameIndex(rs.getInt("GameIndex"));
dbGame.setHomeTeamIndex(rs.getInt("HomeTeamIndex"));
dbGame.setVisitorTeamIndex(rs.getInt("VisitorTeamIndex"));
dbGame.setHomeTeamGoals(rs.getInt("HomeTeamGoals"));
dbGame.setVisitorTeamGoals(rs.getInt("VisitorTeamGoals"));
dbGame.setHomeTeamScoredFirst(rs.getString("HomeTeamScoredFirst"));
dbGame.setYear(rs.getInt("Year"));
dbGame.setMonth(rs.getInt("Month"));
dbGame.setDay(rs.getInt("Day"));
dbGame.setLeagueGame(rs.getBoolean("LeagueGame"));
dbGame.setNeutralSiteGame(rs.getBoolean("NeutralSiteGame"));
dbGame.setForfeitHome(rs.getBoolean("ForfeitHome"));
dbGame.setForfeitVisitor(rs.getBoolean("ForfeitVisitor"));
dbGame.setPlayoffGame(rs.getBoolean("PlayoffGame"));
boxScoreFromDB.setBasicGameData(dbGame);
StatisticalItems.Game dbGame=boxScoreFromDB.getBasicGameData();
// get the home team goals per period.
sqlQuery="SELECT * FROM GameDetailGoalsPerPeriod WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getHomeTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailGoalsPerPeriod dbHomeGPP=boxScoreFromDB.getHomeTeamGoalsPerPeriod();
dbHomeGPP.setGameDetailGoalsPerPeriodIndex(rs.getInt("GameDetailGoalsPerPeriodIndex"));
dbHomeGPP.setGameIndex(rs.getInt("GameIndex"));
dbHomeGPP.setTeamIndex(rs.getInt("TeamIndex"));
dbHomeGPP.setPeriod1(new Integer(rs.getInt("GoalsFirstPeriod")));
dbHomeGPP.setPeriod2(new Integer(rs.getInt("GoalsSecondPeriod")));
dbHomeGPP.setPeriod3(new Integer(rs.getInt("GoalsThidPeriod")));
dbHomeGPP.setOvertime(new Integer(rs.getInt("GoalsOvertime")));
dbHomeGPP.setEmptyNetGoals(rs.getInt("EmptyNetGoals"));
dbHomeGPP.setFoundInDatabase(true);
boxScoreFromDB.setHomeTeamGoalsPerPeriod(dbHomeGPP);
// get the visitor team goals per period.
sqlQuery="SELECT * FROM GameDetailGoalsPerPeriod WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getVisitorTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailGoalsPerPeriod dbVisitorGPP=boxScoreFromDB.getVisitorTeamGoalsPerPeriod();
dbVisitorGPP.setGameDetailGoalsPerPeriodIndex(rs.getInt("GameDetailGoalsPerPeriodIndex"));
dbVisitorGPP.setGameIndex(rs.getInt("GameIndex"));
dbVisitorGPP.setTeamIndex(rs.getInt("TeamIndex"));
dbVisitorGPP.setPeriod1(new Integer(rs.getInt("GoalsFirstPeriod")));
dbVisitorGPP.setPeriod2(new Integer(rs.getInt("GoalsSecondPeriod")));
dbVisitorGPP.setPeriod3(new Integer(rs.getInt("GoalsThidPeriod")));
dbVisitorGPP.setOvertime(new Integer(rs.getInt("GoalsOvertime")));
dbVisitorGPP.setEmptyNetGoals(rs.getInt("EmptyNetGoals"));
dbVisitorGPP.setFoundInDatabase(true);
boxScoreFromDB.setVisitorTeamGoalsPerPeriod(dbVisitorGPP);
// get the home team shots per period.
sqlQuery="SELECT * FROM GameDetailShotsPerPeriod WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getHomeTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailShotsPerPeriod dbHomeSPP=boxScoreFromDB.getHomeTeamShotsPerPeriod();
dbHomeSPP.setGameDetailShotsPerPeriodIndex(rs.getInt("GameDetailShotsPerPeriodIndex"));
dbHomeSPP.setGameIndex(rs.getInt("GameIndex"));
dbHomeSPP.setTeamIndex(rs.getInt("TeamIndex"));
dbHomeSPP.setPeriod1(new Integer(rs.getInt("ShotsFirstPeriod")));
dbHomeSPP.setPeriod2(new Integer(rs.getInt("ShotsSecondPeriod")));
dbHomeSPP.setPeriod3(new Integer(rs.getInt("ShotsThidPeriod")));
dbHomeSPP.setOvertime(new Integer(rs.getInt("ShotsOvertime")));
dbHomeSPP.setFoundInDatabase(true);
boxScoreFromDB.setHomeTeamShotsPerPeriod(dbHomeSPP);
// get the visitor team shots per period.
sqlQuery="SELECT * FROM GameDetailShotsPerPeriod WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getVisitorTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailShotsPerPeriod dbVisitorSPP=boxScoreFromDB.getVisitorTeamShotsPerPeriod();
dbVisitorSPP.setGameDetailShotsPerPeriodIndex(rs.getInt("GameDetailShotsPerPeriodIndex"));
dbVisitorSPP.setGameIndex(rs.getInt("GameIndex"));
dbVisitorSPP.setTeamIndex(rs.getInt("TeamIndex"));
dbVisitorSPP.setPeriod1(new Integer(rs.getInt("ShotsFirstPeriod")));
dbVisitorSPP.setPeriod2(new Integer(rs.getInt("ShotsSecondPeriod")));
dbVisitorSPP.setPeriod3(new Integer(rs.getInt("ShotsThidPeriod")));
dbVisitorSPP.setOvertime(new Integer(rs.getInt("ShotsOvertime")));
dbVisitorSPP.setFoundInDatabase(true);
boxScoreFromDB.setVisitorTeamShotsPerPeriod(dbVisitorSPP);
// get the home team special teams.
sqlQuery="SELECT * FROM GameDetailSpecialTeams WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getHomeTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailSpecialTeams dbHomeST=boxScoreFromDB.getHomeTeamSpecialTeams();
dbHomeST.setGameDetailSpecialTeamsIndex(rs.getInt("GameDetailSpecialTeamsIndex"));
dbHomeST.setGameIndex(rs.getInt("GameIndex"));
dbHomeST.setTeamIndex(rs.getInt("TeamIndex"));
dbHomeST.setPowerplayGoals(rs.getInt("PowerPlayGoals"));
dbHomeST.setShorthandedGoals(rs.getInt("ShortHandedGoals"));
dbHomeST.setPowerplayOps(rs.getInt("PowerPlayOps"));
dbHomeST.setShorthandedOps(rs.getInt("ShortHandedOps"));
dbHomeST.setPenalties(rs.getInt("Penalties"));
dbHomeST.setPenaltyMinutes(rs.getInt("PenaltyMinutes"));
dbHomeST.setFoundInDatabase(true);
boxScoreFromDB.setHomeTeamSpecialTeams(dbHomeST);
// get the home team special teams.
sqlQuery="SELECT * FROM GameDetailSpecialTeams WHERE (GameIndex=" + dbGame.getGameIndex() + ") AND ";
sqlQuery+="(TeamIndex=" + dbGame.getVisitorTeamIndex() + ")";
rs=st.executeQuery(sqlQuery);
if( rs.next() )
StatisticalItems.GameDetailSpecialTeams dbVisitorST=boxScoreFromDB.getVisitorTeamSpecialTeams();
dbVisitorST.setGameDetailSpecialTeamsIndex(rs.getInt("GameDetailSpecialTeamsIndex"));
dbVisitorST.setGameIndex(rs.getInt("GameIndex"));
dbVisitorST.setTeamIndex(rs.getInt("TeamIndex"));
dbVisitorST.setPowerplayGoals(rs.getInt("PowerPlayGoals"));
dbVisitorST.setShorthandedGoals(rs.getInt("ShortHandedGoals"));
dbVisitorST.setPowerplayOps(rs.getInt("PowerPlayOps"));
dbVisitorST.setShorthandedOps(rs.getInt("ShortHandedOps"));
dbVisitorST.setPenalties(rs.getInt("Penalties"));
dbVisitorST.setPenaltyMinutes(rs.getInt("PenaltyMinutes"));
dbVisitorST.setFoundInDatabase(true);
boxScoreFromDB.setVisitorTeamSpecialTeams(dbVisitorST);
rs.close();
st.close();
return boxScoreFromDB;
public void updateBoxScoreInDB(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore,
LUBoxScoreComparator bsc)
throws SQLException
if( bsc.getGameChanged() )
updateGameInDB(dbBoxScore, luBoxScore);
if( bsc.getHomeGoalsPerPeriodChanged() )
updateHomeGoalsPerPeriod(dbBoxScore, luBoxScore);
if( bsc.getVisitorGoalsPerPeriodChanged() )
updateVisitorGoalsPerPeriod(dbBoxScore, luBoxScore);
if( bsc.getHomeShotsPerPeriodChanged() )
updateHomeShotsPerPeriod(dbBoxScore, luBoxScore);
if( bsc.getVisitorShotsPerPeriodChanged() )
updateVisitorShotsPerPeriod(dbBoxScore, luBoxScore);
if( bsc.getHomeSpecialTeamsChanged() )
updateHomeSpecialTeams(dbBoxScore, luBoxScore);
if( bsc.getVisitorSpecialTeamsChanged() )
updateVisitorSpecialTeams(dbBoxScore, luBoxScore);
protected void updateGameInDB(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
// the only fields that NEED to be updated are HomeTeamGoals, VisitorTeamGoals, HomeTeamScoredFirst,
// and LeagueGame. You can't determine from the LU box Score:
// Forfeits, NeutralSite, or Playoff.
// the GameIndex, Both team indexes, and the game date will NEVER change from the database.
Statement st=m_Connection.createStatement();
String sqlStmt="UPDATE Game SET ";
sqlStmt+="HomeTeamGoals=" + luBoxScore.getBasicGameData().getHomeTeamGoals() + ", ";
sqlStmt+="VisitorTeamGoals=" + luBoxScore.getBasicGameData().getVisitorTeamGoals() + ", ";
sqlStmt+="HomeTeamScoredFirst='" + luBoxScore.getBasicGameData().getHomeTeamScoredFirst() + "', ";
sqlStmt+="LeagueGame=" + luBoxScore.getBasicGameData().getLeagueGame() + " ";
sqlStmt+="WHERE GameIndex=" + dbBoxScore.getBasicGameData().getGameIndex();
st.executeUpdate(sqlStmt);
st.close();
protected void updateHomeGoalsPerPeriod(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
Statement st=m_Connection.createStatement();
String sqlStmt="";
if( dbBoxScore.getHomeTeamGoalsPerPeriod().getFoundInDatabase() )
sqlStmt="UPDATE GameDetailGoalsPerPeriod SET ";
sqlStmt+="GameIndex=" + dbBoxScore.getHomeTeamGoalsPerPeriod().getGameIndex() + ", ";
sqlStmt+="TeamIndex=" + luBoxScore.getHomeTeamGoalsPerPeriod().getTeamIndex() + ", ";
sqlStmt+="GoalsFirstPeriod=" + luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod1() + ", ";
sqlStmt+="GoalsSecondPeriod=" + luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod2() + ", ";
sqlStmt+="GoalsThirdPeriod=" + luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod3() + ", ";
sqlStmt+="GoalsOvertime=" + luBoxScore.getHomeTeamGoalsPerPeriod().getOvertime() + ", ";
sqlStmt+="EmptyNetGoals=" + luBoxScore.getHomeTeamGoalsPerPeriod().getEmptyNetGoals() + " ";
sqlStmt+="WHERE GameIndex=" + dbBoxScore.getHomeTeamGoalsPerPeriod().getGameIndex() + " AND ";
sqlStmt+="TeamIndex=" + luBoxScore.getHomeTeamGoalsPerPeriod().getTeamIndex();
else
sqlStmt="INSERT INTO GameDetailGoalsPerPeriod ";
sqlStmt+="(GameIndex, TeamIndex, GoalsFirstPeriod, GoalsSecondPeriod, GoalsThirdPeriod, ";
sqlStmt+="GoalsOvertime, EmptyNetGoals) VALUES(";
sqlStmt+=dbBoxScore.getBasicGameData().getGameIndex() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getTeamIndex() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod1() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod2() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getPeriod3() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getOvertime() + ", ";
sqlStmt+=luBoxScore.getHomeTeamGoalsPerPeriod().getEmptyNetGoals() + ")";
st.executeUpdate(sqlStmt);
st.close();
protected void updateVisitorGoalsPerPeriod(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
Statement st=m_Connection.createStatement();
String sqlStmt="";
if( dbBoxScore.getVisitorTeamGoalsPerPeriod().getFoundInDatabase() )
sqlStmt="UPDATE GameDetailGoalsPerPeriod SET ";
sqlStmt+="GameIndex=" + dbBoxScore.getVisitorTeamGoalsPerPeriod().getGameIndex() + ", ";
sqlStmt+="TeamIndex=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getTeamIndex() + ", ";
sqlStmt+="GoalsFirstPeriod=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod1() + ", ";
sqlStmt+="GoalsSecondPeriod=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod2() + ", ";
sqlStmt+="GoalsThirdPeriod=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod3() + ", ";
sqlStmt+="GoalsOvertime=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getOvertime() + ", ";
sqlStmt+="EmptyNetGoals=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getEmptyNetGoals() + " ";
sqlStmt+="WHERE GameIndex=" + dbBoxScore.getVisitorTeamGoalsPerPeriod().getGameIndex() + " AND ";
sqlStmt+="TeamIndex=" + luBoxScore.getVisitorTeamGoalsPerPeriod().getTeamIndex();
else
sqlStmt="INSERT INTO GameDetailGoalsPerPeriod ";
sqlStmt+="(GameIndex, TeamIndex, GoalsFirstPeriod, GoalsSecondPeriod, GoalsThirdPeriod, ";
sqlStmt+="GoalsOvertime, EmptyNetGoals) VALUES(";
sqlStmt+=dbBoxScore.getBasicGameData().getGameIndex() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getTeamIndex() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod1() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod2() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getPeriod3() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getOvertime() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamGoalsPerPeriod().getEmptyNetGoals() + ")";
st.executeUpdate(sqlStmt);
st.close();
protected void updateHomeShotsPerPeriod(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
Statement st=m_Connection.createStatement();
String sqlStmt="";
if( dbBoxScore.getHomeTeamShotsPerPeriod().getFoundInDatabase() )
sqlStmt="UPDATE GameDetailShotsPerPeriod SET ";
sqlStmt+="GameIndex=" + dbBoxScore.getHomeTeamShotsPerPeriod().getGameIndex() + ", ";
sqlStmt+="TeamIndex=" + luBoxScore.getHomeTeamShotsPerPeriod().getTeamIndex() + ", ";
sqlStmt+="ShotsFirstPeriod=" + luBoxScore.getHomeTeamShotsPerPeriod().getPeriod1() + ", ";
sqlStmt+="ShotsSecondPeriod=" + luBoxScore.getHomeTeamShotsPerPeriod().getPeriod2() + ", ";
sqlStmt+="ShotsThirdPeriod=" + luBoxScore.getHomeTeamShotsPerPeriod().getPeriod3() + ", ";
sqlStmt+="ShotsOvertime=" + luBoxScore.getHomeTeamShotsPerPeriod().getOvertime() + " ";
sqlStmt+="WHERE GameIndex=" + dbBoxScore.getHomeTeamShotsPerPeriod().getGameIndex() + " AND ";
sqlStmt+="TeamIndex=" + luBoxScore.getHomeTeamShotsPerPeriod().getTeamIndex();
else
sqlStmt="INSERT INTO GameDetailShotsPerPeriod ";
sqlStmt+="(GameIndex, TeamIndex, ShotsFirstPeriod, ShotsSecondPeriod, ShotsThirdPeriod, ";
sqlStmt+="ShotsOvertime) VALUES(";
sqlStmt+=dbBoxScore.getBasicGameData().getGameIndex() + ", ";
sqlStmt+=luBoxScore.getHomeTeamShotsPerPeriod().getTeamIndex() + ", ";
sqlStmt+=luBoxScore.getHomeTeamShotsPerPeriod().getPeriod1() + ", ";
sqlStmt+=luBoxScore.getHomeTeamShotsPerPeriod().getPeriod2() + ", ";
sqlStmt+=luBoxScore.getHomeTeamShotsPerPeriod().getPeriod3() + ", ";
sqlStmt+=luBoxScore.getHomeTeamShotsPerPeriod().getOvertime() + ")";
st.executeUpdate(sqlStmt);
st.close();
protected void updateVisitorShotsPerPeriod(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
Statement st=m_Connection.createStatement();
String sqlStmt="";
if( dbBoxScore.getVisitorTeamShotsPerPeriod().getFoundInDatabase() )
sqlStmt="UPDATE GameDetailShotsPerPeriod SET ";
sqlStmt+="GameIndex=" + dbBoxScore.getVisitorTeamShotsPerPeriod().getGameIndex() + ", ";
sqlStmt+="TeamIndex=" + luBoxScore.getVisitorTeamShotsPerPeriod().getTeamIndex() + ", ";
sqlStmt+="ShotsFirstPeriod=" + luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod1() + ", ";
sqlStmt+="ShotsSecondPeriod=" + luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod2() + ", ";
sqlStmt+="ShotsThirdPeriod=" + luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod3() + ", ";
sqlStmt+="ShotsOvertime=" + luBoxScore.getVisitorTeamShotsPerPeriod().getOvertime() + " ";
sqlStmt+="WHERE GameIndex=" + dbBoxScore.getVisitorTeamShotsPerPeriod().getGameIndex() + " AND ";
sqlStmt+="TeamIndex=" + luBoxScore.getVisitorTeamShotsPerPeriod().getTeamIndex();
else
sqlStmt="INSERT INTO GameDetailShotsPerPeriod ";
sqlStmt+="(GameIndex, TeamIndex, ShotsFirstPeriod, ShotsSecondPeriod, ShotsThirdPeriod, ";
sqlStmt+="ShotsOvertime) VALUES(";
sqlStmt+=dbBoxScore.getBasicGameData().getGameIndex() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamShotsPerPeriod().getTeamIndex() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod1() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod2() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamShotsPerPeriod().getPeriod3() + ", ";
sqlStmt+=luBoxScore.getVisitorTeamShotsPerPeriod().getOvertime() + ")";
st.executeUpdate(sqlStmt);
st.close();
protected void updateHomeSpecialTeams(StatisticalItems.BoxScore dbBoxScore,
StatisticalItems.BoxScore luBoxScore)
throws SQLException
Statement st=m_Connection.createStatement();
String sqlStmt="";
if( dbBoxScore.getHomeTeamSpecialTeams().getFoundInDatabase() )
sqlStmt="UPDATE GameDetailSpecialTeams SET ";
sqlStmt+="GameIndex=" + dbBoxScore.getHomeTeamSpecialTeams().getGameIndex() + ", ";
sqlStmt+="TeamIndex=" + luBoxScore.getHomeTeamSpecialTeams().getTeamIndex() + ", ";
sqlStmt+="PowerplayGoals=" + luBoxScore.getHomeTeamSpecialTeams().getPowerplayGoals() + ", ";
sqlStmt+="PowerplayOps=" + luBoxScore.getHomeTeamSpecialTeams().getPowerplayOps() + ", ";
sqlStmt+="ShorthandedGoals=" + luBoxScore.getHomeTeamSpecialTeams().getShorthandedGoals() + ", ";
sqlStmt+="ShorthandedOps=" + luBoxScore.getHomeTeamSpecialTeams().getShorthandeits because you use hungarian notation - that was the hollywood squares answer.
It looks like a bug in either the ntdll or the JdbcOdbc dll, so I'd see if you can't isolate the problem (like using a smaller bit of code) and file a bug report. Find out exacty what your sql statement is which causes this to crash - hint : line 215 -
HI,
we are using JDK1.2 and dont want to change. We are extensively using jdbc:odbc - but it seems it is not really stable. Where can I find the latest jdbc-odbc-Bridge as a separate package? Can it be used with jdk1.2?
TinoI am not sure if this will fix my problem. But I am looking hard for a reason. What me made suspicious is the following: I just tried jdk1.2.2 and there the system crashed immediately. So I read in the bug-database and there I found a likely reason, which caused the bridge to crash. So I thought there might be a similar bug in 1.2.
Anyhow: how do I find out why the jvm is crashing? this might help me a lot.
I used jdbc-odbc in 1.1.4 with a 24x7 system with 200+
users, 3000+ reports a night and a 250 gigabyte
database growing at a rate of 400meg a day.
And I never traced a single problem to the jdbc-odbc
bridge.
How sure are you that a new driver will fix your
problem? -
To run a report from command line, when using jdbc-odbc bridge
Hi,
How to run a report from command line, when using jdbc-odbc bridge?
Usually with tns, we do by "rwrun module=<> userid=<user>/<passwd>@tns".
with odbc, we do by "rwrun module=<> userid=<user>/<passwd>@odbc:DSN"
Please specify, what is command line arguments for jdbc-odbc bridge driver?
Environment : Oracle 9i Report Builder on WinNT
Database : Sybase
Regards,
RamananHello Ramanan,
Report Builder : connect JDBC Query in Report Builder is to through Connection Dialog in JDBC Query Editor. User can use a Sign on parameter (can use, default : P_JDBCPDS or can create new) to connect to JDBC Data Source. Connection once made will be mentioned and will be reused through out Reports Builder.
JDBC PDS allows user to connect one or more same or different kind of databases.
While running report through runtime or Server, user can pass the sign on parameter(connection string) value, like any other user parameter.
Syntax for connection string : <username>/<password>@databaseURL . The syntax of database part of connection string depend on the type of JDBC Driver used to connect to Data Source while designing the JDBC Query. databaseURL refer to the location of the database and its format depend on the JDBCPDS river selected in design time while creating the JDBC Query.
rwrun eg :
rwrun report=jdbc_odbc.rdf destype=file desname=output.html desformat=html P_JDBCPDS=scott/tiger@database
Server eg :
http://server.com:8888/servlet/RWServlet?server=MyReportServer+report=jdbc_odbc.rdf+destype=cache+desformat=html+P_JDBCPDS=scott/tiger@database
http :
Please see ORACLE_HOME/reports/conf/jdbcpds.conf for more information.
With Regards
Reports Team -
Oracle RDB Driver fails with JDBC/ODBC Bridge
Has anyone experienced problems using the latest Oracle RDB
Driver (3.0.2.0) with the JDBC/ODBC Bridge.
We have been using the Oracle ODBC Driver for RDB (2.10.17)
successfully on NT, but it is not supported on W2K. The new
drivers work fine for Access etc., but fail with the bridge.
Specifically, you can step thru a result set, but getObject()
returns null for all fields.
Any suggestions?
JoeThis forum is for general suggestions and feedback about the OTN
site. For technical question about an Oracle product, you can
select the appropriate discussion forum in our 'Discussions'
section at: http://forums.oracle.com/forums/homepage.jsp
Best regards, OTN Team -
Hello,
I'm using JDK1.5 and have a working connection to MySQL using JDBC. I now need to connect to Interbase database using ODBC and that's where I'm completely lost.
Could somebody please tell me if I have to download a JDBC-ODBC bridge or if it's already in the package? Can JDBC-ODBC communicate with InterBase?
Please help.
Thank you,
Victor.Uf you want the password stored in the ODBC DSN, you'll need to go through the back door. This isn't something Oracle makes easy because it has horrible security implications-- the password will be stroed in the registry in plain text.
If you add a key "Password" with the value of your password to the registry where your DSN is, the ODBC driver will use that value to connect to the database. I don't recall the exact heirarchchy riht now, but a registry search for the name of your DSN ought to find it pretty quickly. As always, playing with your registry isn't recommended and may cause problems if you don't do it correctly.
Justin -
JDBC-ODBC Bridge to SPSS data files - Result Set Type is not supported
Hello,
As mentioned in the subject I am trying to read SPSS data files using the SPSS 32-Bit data driver, ODBC and the JDBC-ODBC Bridge.
Using this SPSS Driver I manged to read the data directly into an MS-SQL Server using:
SELECT [...] FROM
OPENROWSET(''MSDASQL.1'',''DRIVER={SPSS 32-BIT Data Driver (*.sav)};DBQ=' SomePathWhereTheFilesAre';SERVER=NotTheServer'', ''SELECT 'SomeSPSSColumn' FROM "'SomeSPSSFileNameWithoutExt'"'') AS a
This works fine!
Using Access and an ODBC System DNS works for IMPORTING but NOT for LINKING.
It is even possible to read the data using the very slow SPSS API.
However, when it comes to JDBC-ODBC the below code does only work in part. The driver is loaded successfully, but when it comes to transferring data into the resultset object the error
SQLState: null
Result Set Type is not supported
Vendor: 0
occurs.
The official answer from SPSS is to use .Net or to use their implementation with Python in their new version 14.0. But this is obviously not an option when you want to use only Java.
Does anybody have experience with SPSS and JDBC-ODBC??? I have tried the possible ResultSet Types, which I took from:
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/rjvdsprp.htm
and none of them worked.
Thank you in advance for your ideas and input & stay happy!
Here the code without all the rest of the class arround it:
// Module: SimpleSelect.java
// Description: Test program for ODBC API interface. This java application
// will connect to a JDBC driver, issue a select statement
// and display all result columns and rows
// Product: JDBC to ODBC Bridge
// Author: Karl Moss
// Date: February, 1996
// Copyright: 1990-1996 INTERSOLV, Inc.
// This software contains confidential and proprietary
// information of INTERSOLV, Inc.
public static void main1() {
String url = "jdbc:odbc:SomeSystemDNS";
String query = "SELECT SomeSPSSColumn FROM 'SomeSPSSFileName'";
try {
// Load the jdbc-odbc bridge driver
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.setLogStream(System.out);
// Attempt to connect to a driver. Each one
// of the registered drivers will be loaded until
// one is found that can process this URL
Connection con = DriverManager.getConnection (url);
// If we were unable to connect, an exception
// would have been thrown. So, if we get here,
// we are successfully connected to the URL
// Check for, and display and warnings generated
// by the connect.
checkForWarning (con.getWarnings ());
// Get the DatabaseMetaData object and display
// some information about the connection
DatabaseMetaData dma = con.getMetaData ();
System.out.println("\nConnected to " + dma.getURL());
System.out.println("Driver " +
dma.getDriverName());
System.out.println("Version " +
dma.getDriverVersion());
System.out.println("");
// Create a Statement object so we can submit
// SQL statements to the driver
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY ,ResultSet.CONCUR_READ_ONLY);
// Submit a query, creating a ResultSet object
ResultSet rs = stmt.executeQuery (query);
// Display all columns and rows from the result set
dispResultSet (rs);
// Close the result set
rs.close();
// Close the statement
stmt.close();
// Close the connection
con.close();
}Thank you for your reply StuDerby!
Actually the above script was before, as you suggested, leaving the ResultSetTeype default. This did not work...
I am getting gray hair with SPSS - in terms of connectivity and "integratebility" none of their solutions offered is sufficient from my point of view.
Variable definitions can only be read by the slow API, data can only be read by Python or Microsoft Products... and if you want to combine both you are in big trouble. I can only assume that this is a company strategy to sell their Dimensions Platform to companies versus having companies developping their applications according to business needs.
Thanks again for any furthur suggestions and I hope, that some SPSS Developper will see this post!
Cheers!! -
Problem using Jdbc-Odbc Bridge
Hi,
I am using Java 2 SDK and I am trying to access MS Access database on my machine using Jdbc-Odbc bridge. I have set up the DSN in ODBC. But I get the following error when I run my program -
'No Suitable Driver'
Here's my code snippet-
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
String dsn = "jdbc:odbc:DriverInfoDB";
Connection con = DriverManager.getConnection(dsn,"","");
con.setAutoCommit(false);
Statement stmt;
String query = null; // SQL select string
ResultSet rs; // SQL query results
stmt = con.createStatement();
.....etc etc...
Where is the error in this code??
Help Needed!!
Thanks
Vivek.try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dsn,"guest","guest");
OR DriverManager.getConnection(dsn);
System.out.println("Conection's opened");
catch(ClassNotFoundException cnfe)
System.err.println(cnfe);
catch(SQLException sqle)
System.err.println(sqle);
try that code and double check you DSN Name . it's a good practice to greate a system DSN.
i hope that helps.
FEEL FREE TO ASK. WON'T BITE U
ABDUL -
How to create db conn for JDBC-ODBC Bridge for MS Access in ADF APP?
Sir,
How to create db conn for JDBC-ODBC Bridge for MS Access in ADF APP?
RegardsHello Every Body!
I succeeded in getting connect to the ms access database in adf application in jdeveloper as below:
First in control panel to to admin tools and go to data source(odbc) and create system dsn as bellow pic
Then go to jdeveloper resources ide conn and then database and new database conn and then select jdbc-odbc briddge and then give custom jdbc url as bellow pic
Cheers
tanvir -
JDBC-ODBC Bridge Performance To MS Access
Hey all, I'm running a Java app that extracts an entire table (set of tables) from Oracle and copies them into Access. The easiest implementation has been to use a DSN-less Type 1 JDBC-ODBC bridge connection to Access, but unfortunately the inserts are taking too long.
I have tried both Statement and PreparedStatement approaches, with both single row and batch updates. Some of the performance times, relative to the computer I am on (PIII 1 gHz with 256 RAM), are as follows:
Via Batch, about 8min, 15 seconds per 10,000 rows.
Via Single Row updates/inserts, about 52 minutes for 45,000 rows.
I've tried alot of varieties with batch, but 10,000 seemed to be the best. The largest table is only 45,000 rows (right now), but has the potential to grow much larger (obviously). This application needs to backup 4 databases, each with N tables (current N=7, but will expand). I'm trying to knock down the times and increase performance, but am not sure what is "reasonable" for Type 1 connections with JDBC. I've seen third party drivers, Type 3, for Access...but don't want to run the middle tier server for filtering request through. I'd rather use Type 4, but can't seem to find any for Access.
Any suggestions? Recommendations? Let me know! Thanks all! :)Hi,
If its a backup/batch process why are you worrying about performance, its only an offline process :) even if has to be triggered during an OLTP run this task asynchronously.
I dont know why you have chosen java to do this ??? any way prepared statements with non scrollable resultsets will increase you performance better tha scrollable normal statements.
Rajesh -
I'm developing an application using EJBs in a development environment with Sun Application Server, Sql Server and NetBeans IDE 4.1. I'm using entity beans and session beans in my application. But, when I try to connect to database using a Servlet or JSP with the session beans, the connection with database could not be established. This is my problem!!!
First, you probably shouldn't use the JDBC/ODBC bridge. Any serious and many non-serious databases have real drivers. Is there anything but Access that really needs the bridge...? Use the jTds driver (google for it). Or just last week Microsoft beta'ed a new JDBC driver for MSSQL; no idea how good it is. Some smalltalk on that: http://www.theserverside.com/news/thread.tss?thread_id=35063
Second, what error do you get?
If it is "connection refused", here is my standard first aid check list:
- Check host name in connect string.
- Check port number in connect string.
- Try numeric IP address of server host in connect string, in case name server is hosed.
- Are there any firewalls between client and server blocking the port.
- Check that the db server is running.
- Check that the db server is listening to the port. On the server, try: "telnet localhost the-port-number". Or "netstat -an", there should be a listening entry for the port.
- Try "telnet serverhost the-port-number" from the client, to see if firewalls are blocking it.
- If "telnet" fails: try it with the numeric ip address.
- If "telnet" fails: does it fail immediately or after an obvious timeout? How long is the timeout?
- Does the server respond to "ping serverhost" or "telnet serverhost" or "ssh serverhost"? -
Null Pointer Exception using JDBC-ODBC bridge on Linux
Wonder if anyone can help me with this one?
I am attempting to use the JDBC-ODBC bridge on Fedora with J2SDK 1.4.2_04, however I am getting a NullPointerException whenever I get the connection. I can get the JDBC connection to work but it is a requirement that ODBC be used.
The code is as simple as it can get.
import java.sql.*;
public class TestClass
public static void doConnection()
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn = DriverManager.getConnection("jdbc:odbc:DB");
catch (Exception e)
e.printStackTrace();
public static void main(String[] args)
doConnection();
}Running this program using java -verbose TestClass I get the following output.
[Loaded sun.jdbc.odbc.JdbcOdbc from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
[Loaded java.lang.UnsatisfiedLinkError from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
[Loaded java.sql.SQLException from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
[Loaded java.sql.SQLWarning from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
java.lang.NullPointerException
[Loaded java.lang.StackTraceElement from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
at TestClass.doConnection(TestClass.java:13)
at TestClass.main(TestClass.java:96)
[Loaded java.lang.Shutdown from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
[Loaded java.lang.Shutdown$Lock from /usr/java/j2sdk1.4.2_04/jre/lib/rt.jar]
The UnsatisfiedLinkError suggests to me that a library cannot be found, but I don't know what library.
As far as I know I have configured ODBC correctly. I can achieve connectivity to my database using other tools and I still get this same error irrespective of whether the DSN is valid or not.
I have installed the unixODBC rpm.
Any help/insite would be greatly appreciated.This is the output of ldd. Everything appears to be resolved.
linux-gate.so.1 => (0x00cf5000)
libodbcinst.so => /usr/sybase/lib/libodbcinst.so (0x001d5000)
libjava.so => libjava.so (0x008af000)
libjvm.so => /usr/java/j2sdk1.4.2_04/jre/lib/i386/client/libjvm.so (0x002a7000)
libc.so.6 => /lib/i686/libc.so.6 (0x00d77000)
libdbtasks7.so => /usr/sybase/lib/libdbtasks7.so (0x00eb2000)
libdl.so.2 => /lib/libdl.so.2 (0x00111000)
libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x00115000)
libm.so.6 => /lib/i686/libm.so.6 (0x008fb000)
libverify.so => libverify.so (0x0016e000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00180000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x006d0000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00157000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00b75000)
The ODBC is a Sybase driver and is loaded from elsewhere. I will check for any known compatibility issues. -
Access MS-Access using JDBC ODBC bridge from Sun AMD64
Hi,
We are trying to configure a communication channel using the JDBC adapter. We are setting the driver to the JDBC-ODBC bridge driver and trying to access an MS Acess database from the PI server(sun amd64). When we set the driver to the JDBC-ODBC bridge, the J2EE engine tries to restart immediately and does not start. The std_server.out contains the following error:
Service com.sap.aii.adapter.jdbc.svc started. (234 ms).
1016 sun.io.CharToByteASCII::convert (370 bytes)
1017 ! com.sap.sql.jdbc.common.CommonPreparedStatement::close (119
bytes)
ld.so.1: jlaunch: fatal: relocation error:
file /usr/j2se/jre/lib/amd64/libJdbcO
dbc.so: symbol SQLAllocEnv: referenced symbol not found
Has anybody been able to configure the JDBC-ODBC bridge driver for MS Access? Also, has anybody used the database vendor(MS) drivers? If so, where are they available.
Thanks in advance
VipinHi
Please go through below links that would be helpful to you
SAP Network Blog: Connecting to MS Access using receiver JDBC Adapter (Without DSN)
/people/sameer.shadab/blog/2005/10/24/connecting-to-ms-access-using-receiver-jdbc-adapter-without-dsn
/people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
If required Try the following driver. I havent used it but its available.
HXTT Access is such a type 4 driver at http://www.hxtt.net/en/software/access/document.html .
Thanks
Swarup -
SQL Developer 2.1.1 : JDBC/ODBC Bridge
Hi, I am running SQL Developer 2.1.1 and would like to to access databases other than those formally supported.
I am happy to use the JDBC/ODBC Bridge - although additional JDBC connectivity would be ideal, I gather that it is not supported.
Googling, and searching on this forum, implies that I should install the appropriate JDBC driver for the Bridge, list it on the third party JDBC drivers Preferences page, and that a 'Create Connection' dialog JDBC tab would then appear on restarting SQL Developer, as happens when you install the supported MySQL JDBC driver, for example.
I am sorry to be dim, but I cannot track down a jar file containing the JDBC/ODBC Bridge that is supported by SQL Developer to the extent of enabling the JDBC tab. The rt.jar shipped in SQL Developer's JRE does not do the job. Checking for updates from the Help menu lists nothing that looks even remotely relevant. Where should I be looking?
Thanks a lot
Mandy Shaw
Edited by: 845622 on Mar 18, 2011 10:59 AM - Clarified - sorryThe additional connection types only appear for supported databases.
I haven't tried this, but I vaguely remember some discussions from a long time ago.
Make sure the jar file (and any supporting DLLs) are on your classpath (probably dropping them in the extensions directory will do it) and then in the new connection dialog select 'Advanced' connection type. This lets you enter a JDBC URL in any format so you can enter what is required for your additional databases.
If this works, the most it will get you is a SQL Worksheet with no completion insight or syntax checking. Because SQL Developer doesn't know how to use the database catalogue, the object navigator won't work. -
MS SQL Server 7 thru JDBC:ODBC bridge
Hi,
I am trying to access MS SQL server 7 thru JDBC ODBC bridge. I am finding my varchar data is being truncated to 255 characters. Any help on this would be appreciated.Any body know of a good type 4 jdbc driver for SQL
Server 7. There is one for SQL server 2000
downloadable from micrsoft site, but does it work for
sql server 7 too ?Older betas of this driver suported SQL Server 7, but I believe the plan is to specifically remove that capability in its final release.
My biased opinion would be to try the driver from DataDirect. http://www.ddtek.com Its their driver (an older version) that Microsoft has licensed for MS SQl 2000.
Getting it from DataDirect has a couple obvious advantages:
1. Its a later, more stable, better performing version
2. It will continue to Support MS SQL 7
3. It's suported by 24/7 phone,email and web tech support.
4. And, early this week, you should be able to get the latest 3.0 release which promises to be even more robust, in addition to conforming to the new specs.
5. its not free, but then again- you get what you pay for...
Maybe you are looking for
-
Hello. This is the problem. When I try to open with premiere pro CC 2014 a converted and actualized CC 2014 version of a project created previously in a previous version of premiere, the software crash. Said in other words if it doesn't clear: - I cr
-
Check box to copy text from 1 field to another
I am trying to use a check box to copy the tech from a billing address text box to a shipping address text box only if the check box is checked. I am new to using java and building forms in acrobat so please understand. I have googled and tried to im
-
With new Brightbox2 router and fibre broadband, PC not shutting down on request
Yesterday connected to fibre broadband with new Brightbox2 router. Since then have been unable to Shut Down PC, although can select Sleep OK. Also cannot access System Manager via Ctrl-Alt-Del.
-
How do i get the font on my iMac bigger
how do i get the font on my iMac bigger
-
Block nuisance calls from my phone on iphone
can i block certain phone numbers from calling my iphone? I'm getting some marketing calls.