Problema UPDATE no SQL pelo Java

O Banco de Dados:

create database biblioteca --cria banco de dados go use biblioteca --usa o banco de dados go create table livros( --cria a tabela e atributos Titulo varchar(60)not null, Autor varchar(60), Editora varchar(60), Gênero varchar(60), Isbn varchar(20), Edição int, Tipo varchar(20)) go

O Método Alterar

[code]public void alterar(String isbn, String titulo, int edicao, String genero, String tipo, String autor, String editora){

 String sql="UPDATE livros SET Titulo='?',Autor='?',Editora='?',Genero='?',Isbn=?,Edicao='?',Tipo='?' WHERE Isbn=?";
try{
        Connection conn=Conexao.getConexao();
        PreparedStatement pst=conn.prepareStatement(sql);
        pst.setString(1,titulo);
        pst.setString(2,autor);
        pst.setString(3,editora);
        pst.setString(4,genero);
        pst.setString(5,isbn);
        pst.setInt(6,edicao);
        pst.setString(7,tipo);
        pst.setString(8,isbn);
        pst.executeUpdate();


}catch(Exception e){

  System.out.println("Erro AO ALTERAR: "+e.toString());

}

}[/code]

O problema é esse: Erro AO ALTERAR: com.microsoft.sqlserver.jdbc.SQLServerException: The index 3 is out of range.

Alguém pode me ajudar?

Olá,
Não é necessário colocar as aspas simples nos parâmetros, o próprio setXXX se encarrega de fazer isso se for necessário.
Essa linha fica assim:

String sql="UPDATE livros SET Titulo = ? , Autor = ? , Editora = ? , Genero = ? ,Isbn = ? , Edicao = ? ,Tipo = ? WHERE Isbn = ? ";

[quote=jamirdeajr]Olá,
Não é necessário colocar as aspas simples nos parâmetros, o próprio setXXX se encarrega de fazer isso se for necessário.
Essa linha fica assim:

String sql="UPDATE livros SET Titulo = ? , Autor = ? , Editora = ? , Genero = ? ,Isbn = ? , Edicao = ? ,Tipo = ? WHERE Isbn = ? ";

Mas ainda não ta fazendo o Update. :confused: Da erro nenhum, mas vou no banco e não ta lá.

Só agora vi teu script SQL…

[quote]create database biblioteca --cria banco de dados
go
use biblioteca --usa o banco de dados
go
create table livros( --cria a tabela e atributos
Titulo varchar(60)not null,
Autor varchar(60),
Editora varchar(60),
Gênero varchar(60),
Isbn varchar(20),
Edição int,
Tipo varchar(20))
go[/quote]

Você criou os campos ‘Gênero’ e ‘Edição’ com desse jeito, com os acentos?
Se for temos que mudar pra ficar assim:

String sql="UPDATE livros SET Titulo=?,Autor=?,Editora=?,Gênero=?,Isbn=?,Edição=?,Tipo=? WHERE Isbn=?";  

Mas as tabelas tão com o nome certo, eu não tinha executado essa linha da tabela não. No banco as tabelas tão com os nomes sem acento.

Não entendi muito bem, mas tente colocar o autocommit (acho que é padrão true, mas vá lá né) e fechar a conexão ao final.

conn.setAutoCommit(true); pst.close();

Da uma olhada também no que o ISBN está trazendo.

Consegui já, valeu galera.