Foros del Web » Programación para mayores de 30 ;) » Java »

javasql

Estas en el tema de javasql en el foro de Java en Foros del Web. Tengo el Siguiente Codigo: void jButton1_actionPerformed(ActionEvent e) { try { Connection c; PreparedStatement ps; ResultSet rs; String str = "jdbc:odbc:PEMPLEADO2"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); c = DriverManager.getConnection(str); ps ...
  #1 (permalink)  
Antiguo 21/07/2011, 14:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 7 meses
Puntos: 3
javasql

Tengo el Siguiente Codigo:

void jButton1_actionPerformed(ActionEvent e) {

try
{
Connection c;
PreparedStatement ps;
ResultSet rs;
String str = "jdbc:odbc:PEMPLEADO2";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection(str);
ps = c.prepareStatement("Select * From EMPLEADO");
rs = ps.executeQuery();

while (rs.next())
{

Object[] fila = new Object[5];

for (int i = 0; i < 5; i++)
{
fila[i] = rs.getObject(i + 1);
}

datos.addRow(fila);
}


}
catch (Exception es) {
es.printStackTrace();
}

TableColumn columna2 = jTable1.getColumnModel().getColumn(5);

columna2.setCellRenderer(jTable1.getDefaultRendere r(Boolean.class));

columna2.setCellEditor(jTable1.getDefaultEditor(Bo olean.class));

int m2=datos.getRowCount();

int m1=datos.getColumnCount()-1;

for (int j = 0; j < m2; j++)
{
for (int i = 0; i < m1; i++)
{
v.add(datos.getValueAt(i, j));
//v.add(datos.getDataVector().elementAt(j));
}
}
}



Donde en mi tabla de mi aplicacion tengo 6 columnas.


Cuando hago click en el boton para que muestre los registros de mi base de datos que son 7 en mi tabla de mi aplicacion me sale el siguiente mensaje:


java.lang.ArrayIndexOutOfBoundsException: 6 >= 6

at java.util.Vector.elementAt(Vector.java:431)

at javax.swing.table.DefaultTableModel.getValueAt(Def aultTableModel.java:618)

at sintitulo6.Marco1.jButton1_actionPerformed(Marco1. java:389)

at sintitulo6.Marco1_jButton1_actionAdapter.actionPer formed(Marco1.java:710)

at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1786)

at javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(AbstractButton.java:1839)

at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:245)

at java.awt.Component.processMouseEvent(Component.jav a:5100)

at java.awt.Component.processEvent(Component.java:489 7)

at java.awt.Container.processEvent(Container.java:156 9)

at java.awt.Component.dispatchEventImpl(Component.jav a:3615)

at java.awt.Container.dispatchEventImpl(Container.jav a:1627)

at java.awt.Component.dispatchEvent(Component.java:34 77)

at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:3483)

at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3198)

at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3128)

at java.awt.Container.dispatchEventImpl(Container.jav a:1613)

at java.awt.Window.dispatchEventImpl(Window.java:1606 )

at java.awt.Component.dispatchEvent(Component.java:34 77)

at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)

at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)





Porque me sale este p mensaje
  #2 (permalink)  
Antiguo 21/07/2011, 15:21
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 20
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: javasql

Código java:
Ver original
  1. /**
  2. *
  3. * @author Soma
  4. *
  5.  
  6. *
  7. */
  8. package BD;
  9. import java.sql.Connection;
  10. import java.sql.DriverManager;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13. import java.sql.Statement;
  14.  
  15. public class BD {
  16. private String user;
  17. private String password;
  18. private String url;
  19. private String driverClassName;
  20. private Connection conn = null;
  21. private Statement stmt;
  22.  
  23. public BD(String user, String password, String url, String driverClassName) {
  24. this.user = user;
  25. this.password = password;
  26. this.url = url;
  27. this.driverClassName = driverClassName;
  28. }
  29. public BD()
  30. {
  31. this.user = "root";
  32. this.password="tupass";
  33. this.url = "jdbc:mysql://localhost/tu_basedatos";
  34. this.driverClassName = "com.mysql.jdbc.Driver"; // driver
  35. }
  36. public String getPassword() {
  37. return password;
  38. }
  39.  
  40. public String getUrl() {
  41. return url;
  42. }
  43.  
  44. public String getUser() {
  45. return user;
  46. }
  47.  
  48. public void setPassword(String password) {
  49. this.password = password;
  50. }
  51.  
  52. public void setUrl(String url) {
  53. this.url = url;
  54. }
  55.  
  56. public Connection getConn() {
  57. return conn;
  58. }
  59.  
  60. public void setConn(Connection conn) {
  61. this.conn = conn;
  62. }
  63.  
  64. public void setDriverClassName(String driverClassName) {
  65. this.driverClassName = driverClassName;
  66. }
  67.  
  68. public String getDriverClassName() {
  69. return driverClassName;
  70. }
  71.  
  72. public void setUser(String user) throws SQLException {
  73. this.user = user;
  74. }
  75.  
  76. public void conectar() throws SQLException {
  77. try {
  78. Class.forName(this.driverClassName).newInstance();
  79. this.conn = DriverManager.getConnection(this.url, this.user, this.password);
  80.  
  81. } catch (Exception err) {
  82. System.out.println("Error " + err.getMessage());
  83. }
  84. }
  85.  
  86. public ResultSet obtenerDatos(String sql) throws SQLException {
  87.  
  88. this.stmt = conn.createStatement();
  89. return this.stmt.executeQuery(sql);
  90. }
  91.  
  92. public void actualizar(String sql) throws SQLException {
  93. this.stmt = conn.createStatement();
  94. stmt.executeUpdate(sql);
  95. }
  96. public ResultSet ExeGet(String Q) throws SQLException{
  97. Statement st = this.conn.createStatement();
  98. return (ResultSet) st.executeQuery(Q);
  99. }
  100. public int Exe(String Q) throws SQLException{
  101. Statement st = this.conn.createStatement();
  102. return st.executeUpdate(Q);
  103. }
  104.  
  105. public void Off() throws SQLException{
  106. this.conn.close();
  107. }
  108.  
  109. }

Te recomiendo usar esa clase para llamar a conexion de base de datos aqui un ejemplo de como usarlo


Código java:
Ver original
  1. try{
  2.         con.conectar();
  3.        
  4.         //haciendo pruebas
  5.        
  6.      ResultSet datos = con.ExeGet("select * from persona where rut='"+form.getRut()+"';");
  7.     //sacamos todo del resulset
  8.      while(datos.next()){
  9.          //lo enviamos a un page input y lo imprimimos para verlo en la consola tambien
  10.             System.out.println("rut :"+ datos.getObject("rut"));
  11.             System.out.println("nombre :"+ datos.getObject("nombre"));
  12.             System.out.println("edad :"+ datos.getObject("edad"));
  13.             System.out.println("direccion : "+ datos.getObject("direccion"));
  14.             //////////////////outposts
  15.             f.addActionOutput("rut", datos.getObject("rut"));
  16.             f.addActionOutput("nombre", datos.getObject("nombre"));
  17.             f.addActionOutput("edad", datos.getObject("edad"));
  18.             f.addActionOutput("direccion", datos.getObject("direccion"));
  19.          
  20.      }
  21.     con.Off();

System.out.println("rut :"+ datos.getObject("rut")); // aqui sacas el rut del campo llamado rut... si tienes dudas pregunta
  #3 (permalink)  
Antiguo 22/07/2011, 01:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: javasql

Si ok.pero quisiera saber que me puede responder respecto a mi consulta porque me sale ese mensaje
  #4 (permalink)  
Antiguo 22/07/2011, 02:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: javasql

Cita:

java.lang.ArrayIndexOutOfBoundsException: 6 >= 6
estás accediendo a una posición que no existe.
  #5 (permalink)  
Antiguo 22/07/2011, 02:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: javasql

Si, el problema es ese, un índice de un array fuera de rango. Viendo este código

Código java:
Ver original
  1. int m2=datos.getRowCount();
  2.  
  3. int m1=datos.getColumnCount()-1;
  4.  
  5. for (int j = 0; j < m2; j++)
  6. {
  7. for (int i = 0; i < m1; i++)
  8. {
  9. v.add(datos.getValueAt(i, j));
  10. //v.add(datos.getDataVector().elementAt(j));
  11. }
  12. }
  13. }

me da la impresión de que estás liando filas con columnas. m2 y j son las filas... así que debería ser getValueAt(j,i) y no getValueAt(i,j)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 24/07/2011, 00:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: javasql

Si gracias a todos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.