Help problema no banco

6 respostas
tengan

não estou conseguindo inserir dados em um banco de dados access
está dando o seguinte erro
ArrayIndexOutOfBoundsException: 1.
conexao e tudo normal qual será este erro que está dando veja o código:

<%@page import = "java.sql.Connection"%>
<%@page import = "java.sql.DriverManager"%>
<%@page import = "java.sql.PreparedStatement"%>
<%@page import = "java.sql.ResultSet"%>
<%@page import = "java.sql.SQLException"%>
<%
	try {
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection conexao = DriverManager.getConnection("jdbc:odbc:oficina","","");

                PreparedStatement insere = conexao.prepareStatement("INSERT INTO cliente " +
                                                                    "(id,nome,cpf,endereco,tel/cel,cidade,uf,cep,email,pessoa,CNPJ,contato) " +
                                                                "VALUES (?,'?','?','?','?','?','?','?','?','?','?','?');");


                String ID = request.getParameter("txt_ID_cliente");
                String nome =request.getParameter("txt_nome_cliente");
                String cpf = request.getParameter("txt_CPF_cliente");
                String endereco = request.getParameter("txt_endereco_cliente");
                String tel = request.getParameter("txt_tel_cliente");
                String cidade = request.getParameter("txt_cidade_cliente");
                String uf = request.getParameter("slc_UF_cliente");
                String cep = request.getParameter("txt_CEP_cliente");
                String email = request.getParameter("txt_email_cliente");
                String pessoa = request.getParameter("edtesctipopessoa");
                if (pessoa.equals("fisica")){
                    insere.setString(1,ID);
                    insere.setString(2,nome);
                    insere.setString(3,cpf);
                    insere.setString(4,endereco);
                    insere.setString(5,tel);
                    insere.setString(6,cidade);
                    insere.setString(7,uf);
                    insere.setString(8,cep);
                    insere.setString(9,email);
                    insere.setString(10,pessoa);
                    insere.setString(11,"pessoa fisica");
                    insere.setString(12,"pessoa fisica");
                } else if (pessoa.equals("juridica")){
                    String contato = request.getParameter("txt_contato_cliente");
                    insere.setString(1,ID);
                    insere.setString(2,nome);
                    insere.setString(3,"pessoa juridica");
                    insere.setString(4,endereco);
                    insere.setString(5,tel);
                    insere.setString(6,cidade);
                    insere.setString(7,uf);
                    insere.setString(8,cep);
                    insere.setString(9,email);
                    insere.setString(10,pessoa);
                    insere.setString(11,cpf);
                    insere.setString(12,contato);
                }

                int cont = insere.executeUpdate();
                
                conexao.close();
        } catch (SQLException e) {
            out.println("Erro " + e.toString());
        } catch (Exception e){
            out.println("Erro " + e.toString());
        }
%>

o sistema é em JSP mas acho que o erro não é nem do BD por favor me ajudem o esquema é pra amanhã.

6 Respostas

Roger75

Esse erro acontece quando você tem um array de n elementos e quer inserir na posição n+1, por exemplo, ou quer retornar um valor do array de uma posição inexistente.

tengan

o único array que tenho é o do PreparedStatement, e descobrir que o erro é depois de eu setar o ID na Instrução SQL, mas ainda não resolvi o problema

T

Troque

PreparedStatement insere = conexao.prepareStatement("INSERT INTO cliente " +
                                                                     "(id,nome,cpf,endereco,tel/cel,cidade,uf,cep,email,pessoa,CNPJ,contato) " +
                                                                 "VALUES (?,'?','?','?','?','?','?','?','?','?','?','?');");

por

PreparedStatement insere = conexao.prepareStatement("INSERT INTO cliente " +
                                                                     "(id,nome,cpf,endereco,tel/cel,cidade,uf,cep,email,pessoa,CNPJ,contato) " +
                                                                 "VALUES (?,?,?,?,?,?,?,?,?,?,?,?);");

e veja se funciona. Depois você me explica porque passou a funcionar.

tengan

blz. fiz mas ainda está dando um erro agora é do comando SQL veja:
java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe na instrução INSERT INTO. 37000.

tengan

ae galer descobri o erro, meu muito infantil coloquei tel/cel como campo sendo que no Access só aceita _ de caractere especial ou seja ele não conhecia esse campo engraçado que ele deixou eu criar o campo normalmente. uma coisa que pensei agora que na hora de montar a String o Java deve ter visto a barra como um cartere de escape.
no resto consegui resolver o problema antes do prazo e estou correndo agora pra recuperar o tempo perdido

Og1

Usa um banco de verdade então :wink:

Criado 7 de junho de 2006
Ultima resposta 8 de jun. de 2006
Respostas 6
Participantes 4