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.
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.