Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Para algún experto...
Enviado por Joan el día 16 de julio de 2002
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);
}
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 programa\Java\j2re1.4.0_01\bin\client\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.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)
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.
Enviado por José Manuel el día 20 de agosto de 2002
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)
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