Meu problema é ao executar o método executeUpdate() da classe PreparedStatement, ele retorna o erro: Exception in thread “AWT-EventQueue-0” java.lang.IndexOutOfBoundsException: Index: 1, Size: 1. Eis o código:
*/
package salão;
import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author josue
*/
public class Conexao {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mydb";
static private String query = null;
static private Connection connection= null;
static private Statement statement=null;
static private PreparedStatement preparedstatement=null;
Conexao(){
System.out.println("Conectado com sucesso");
try {
Class.forName(JDBC_DRIVER);
connection = DriverManager.getConnection(DATABASE_URL,"root","root23");
statement = connection.createStatement();
}
catch (SQLException sqlException) {
Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, sqlException);
System.out.print("Erro conexão/Query SQL");
}
catch (ClassNotFoundException ex) {
Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
System.out.print("Erro de classe não encontrada");
}
}
static void insert(String nomeTabela, ArrayList campos, ArrayList valores) throws SQLException {
for(int i=0;i<campos.size();i++){
if(i==0) query= "Insert into " + nomeTabela + "(" + campos.get(i).toString() +",";
else if(i==campos.size()-1)
{
query+=campos.get(i).toString() + ")";
}
else {
query+=campos.get(i).toString() + ",";
}
}
query+=" values(";
//COM INTERROGAÇÕES//
for(int i=0;i<campos.size();i++){
if(i<campos.size()-1){
query+="?,";
}
else query+="?);";
}
System.out.println(query);
System.out.println("Entrou aqui!");
preparedstatement = connection.prepareStatement(query);
for(int i=0;i<campos.size();i++){
System.out.println(i);
preparedstatement.setString(i+1, valores.get(i).toString());
System.out.println(valores.get(i).toString());
}
//Até aqui tudo bem sem a próxima instrução (executeUpdate()) não dá erro algum.
preparedstatement.executeUpdate();
fecharConexao();
}
Erro completo:
[color=red]Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at salão.TelaCadastro.cadastrarProdutoActionPerformed(TelaCadastro.java:877)
at salão.TelaCadastro.access$200(TelaCadastro.java:18)
at salão.TelaCadastro$4.actionPerformed(TelaCadastro.java:461)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)[/color]
Acho estranho o fato de que o erro cita ArrayList no entanto o erro é no executeUpdate().
Qualquer ajuda agradeço.