Para algún experto...

Joan
29 de Febrero del 2008
Hola,
Alguien me podría explicar por qué cuando ejecuto esta sencilla clase:

import java.lang.*;
import java.sql.*;
public class BaseDadesPont{
public static void main (String args[]){
try{
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:cofee";
Connection con = DriverManager.getConnection (url,"jrovira","kiliki");
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT * FROM coffees");
while(rs.next()){
String s = rs.getString("PRICE");
System.out.println(s);
}


}
catch (Exception e){
System.out.println(e.getMessage());
}

}

}


que lo único que hace es hacer una consulta a una base de datos y listar por pantalla los registros del campo "price" me el Mega error que más abajo reporto?

Dato impotante: sistemáticamente, si omito los parámetros para que el ResultSet sea Recorrible y updatable "(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);" Todo funciona correctamente.
Mi configuración es: WIN 2000 con j2sdk1.4.0_01; ataco a mySQL mediante el puente JdbcOdbc.
Lo detecté en un servlet que corria con TOMCAT, En el momento en que puse los parámetros, TOMCAT se paraba cada vez que pedía el servlet.

El error que genera es:


Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6D366658
Function=[Unknown.]
Library=C:Archivos de programaJavaj2re1.4.0_01binclientjvm.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.setStmtAttrPtr(Native Method)
at sun.jdbc.odbc.JdbcOdbc.SQLSetStmtAttrPtr(JdbcOdbc.java:4676)
at sun.jdbc.odbc.JdbcOdbcResultSet.setRowStatusPtr(JdbcOdbcResultSet.java:4473)
at sun.jdbc.odbc.JdbcOdbcResultSet.initialize(JdbcOdbcResultSet.java:171)
at sun.jdbc.odbc.JdbcOdbcStatement.getResultSet(JdbcOdbcStatement.java:423)
- locked <02A581B8> (a sun.jdbc.odbc.JdbcOdbcStatement)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at BaseDadesPont.main(BaseDadesPont.java:10)

Dynamic libraries:
0x00400000 - 0x00406000 C:WINNTsystem32java.exe
0x77F80000 - 0x77FFF000 C:WINNTSystem32ntdll.dll
0x77DB0000 - 0x77E0A000 C:WINNTsystem32ADVAPI32.dll
0x77E80000 - 0x77F40000 C:WINNTsystem32KERNEL32.DLL
0x77D40000 - 0x77DAF000 C:WINNTsystem32RPCRT4.DLL
0x78000000 - 0x78046000 C:WINNTsystem32MSVCRT.dll
0x6D330000 - 0x6D445000 C:Archivos de programaJavaj2re1.4.0_01binclientjvm.dll
0x77E10000 - 0x77E75000 C:WINNTsystem32USER32.dll
0x77F40000 - 0x77F7C000 C:WINNTsystem32GDI32.DLL
0x77550000 - 0x77581000 C:WINNTsystem32WINMM.dll
0x6D1D0000 - 0x6D1D7000 C:Archivos de programaJavaj2re1.4.0_01binhpi.dll
0x6D300000 - 0x6D30D000 C:Archivos de programaJavaj2re1.4.0_01binverify.dll
0x6D210000 - 0x6D228000 C:Archivos de programaJavaj2re1.4.0_01binjava.dll
0x6D320000 - 0x6D32D000 C:Archivos de programaJavaj2re1.4.0_01binzip.dll
0x6D250000 - 0x6D25A000 C:Archivos de programaJavaj2re1.4.0_01binJdbcOdbc.dll
0x1F7D0000 - 0x1F804000 C:WINNTsystem32ODBC32.dll
0x76B10000 - 0x76B4E000 C:WINNTsystem32comdlg32.dll
0x77C70000 - 0x77CBA000 C:WINNTsystem32SHLWAPI.DLL
0x77B50000 - 0x77BDA000 C:WINNTsystem32COMCTL32.DLL
0x77590000 - 0x777D7000 C:WINNTsystem32SHELL32.DLL
0x1F8C0000 - 0x1F8D8000 C:WINNTsystem32odbcint.dll
0x10000000 - 0x10053000 C:WINNTSystem32myodbc.dll
0x72E30000 - 0x72E41000 C:WINNTSystem32CTL3D32.dll
0x75000000 - 0x75009000 C:WINNTSystem32WSOCK32.dll
0x74FE0000 - 0x74FF4000 C:WINNTSystem32WS2_32.DLL
0x74FD0000 - 0x74FD8000 C:WINNTSystem32WS2HELP.DLL
0x1F820000 - 0x1F83A000 C:WINNTsystem32odbccp32.dll
0x77A50000 - 0x77B45000 C:WINNTsystem32ole32.dll
0x77820000 - 0x77827000 C:WINNTsystem32VERSION.dll
0x75980000 - 0x75986000 C:WINNTsystem32LZ32.DLL
0x77840000 - 0x7784C000 C:WINNTSystem32rnr20.dll
0x77980000 - 0x779A4000 C:WINNTsystem32DNSAPI.DLL
0x777E0000 - 0x777E8000 C:WINNTSystem32winrnr.dll
0x77950000 - 0x7797A000 C:WINNTsystem32WLDAP32.DLL
0x777F0000 - 0x777F5000 C:WINNTsystem32rasadhlp.dll
0x77830000 - 0x7783E000 C:WINNTsystem32RTUTILS.DLL
0x74F80000 - 0x74F91000 C:WINNTsystem32msafd.dll
0x74FC0000 - 0x74FC7000 C:WINNTSystem32wshtcpip.dll
0x77920000 - 0x77942000 C:WINNTsystem32imagehlp.dll
0x729A0000 - 0x729CD000 C:WINNTsystem32DBGHELP.dll
0x68F70000 - 0x68F7B000 C:WINNTsystem32PSAPI.DLL

Local Time = Mon Jul 15 21:37:00 2002
Elapsed Time = 6
#
# HotSpot Virtual Machine Error : EXCEPTION_ACCESS_VIOLATION
# Error ID : 4F530E43505002D5
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0_01-b03 mixed mode)
#

am
29 de Febrero del 2008
Si te entiendo bien (no soy experto).. esto es un error (bug) de Sun. Bajo ninguna circunstancia deberia suceder esto deberias notificarle a Sun.

Ahora.. sobre la causa y solucion.. dejemos eso para los expertos ::>

Saludos..

Jos?anuel
29 de Febrero del 2008
dudo que sea un bug de Sun, ya que yo he tenido problemas de ese estilo cuando he empezado a trastear con los objetos 'Class' 'Method' y similares.
Por tanto, la respuesta de juanjo33 me parece muy acertada, ya que un fallo a ese nivel no suele dar una excepción, si no que más bien da el error que comentas (aparenta ser un bug interno)

Edgar
29 de Febrero del 2008
lo que sucede es que no estas utilizando el driver nativo de MySQL para jdbc sino el driver para ODBC y ODBC no deja de ser ODBC asi sea oracle, acces, fox pro, o MySQL, lo que puedes hacer es descargar el driver de la pagina de MySQL, el driver mm e instalarlo en tu CLASSPATH, ahora en lugar de escribir

sun.odbc.jdbc.OdbcJdbcDriver

tendras que escribir

org.gjt.mm.mysql.Driver

y tu path sera

jdbc:mysql://localhost/coffe

en lugar de

jdbc:odbc:coffe

y este driver no deveria fallar.

juanjo33
29 de Febrero del 2008
La nueva version de MySql ya tiene las funciones que necesitas y tiene un nuevo driver para java, el JConnector, que funciona muy bien.

juanjo33
29 de Febrero del 2008
Pues es que si te fijas, la clase Resultset es un interface, lo cual quiere decir que en la practica tu estas utilizando la clase ResultSet del fabricante de tu base de datos, que habra implementado las partes que haya querido o podido.
Y no todas las bases de datos soportan todas las posibles opciones.
Lo que te pasa es que mySQL no soporta recorrer los resultados como tu quieres (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE). Esta informacion te tiene que venir con el driver del mySQL. Otras bases de datos como oracle si que lo permiten, pero siempre depende del fabricante. Fijate en que clase ResultSet estas usando.

PENE23CM
29 de Febrero del 2008
TONTO CHALAO HOMOSEXUAL , IGNORANTE, APRENDE A PROGRAMAR

killer of Artheran
29 de Febrero del 2008
deseo el archivo shlwapi.dll