Olá!
Estou tentando efetuar uma inserção no Oracle XE 11, porém via código não estou conseguindo.
Quando eu copio exatamente o que passo e coloco via terminal, consigo inserir na tabela, entretanto ao executar meu código ele retorna o erro “Índice de coluna inválido”.
O código de inserção é este:
public void registerUser(Usuario usuario) throws Exception {
super.open();
stmt = con.prepareStatement("INSERT INTO USUARIO VALUES (null, '?', '?', '?');");
stmt.setString(1, usuario.getNome());
stmt.setString(2, usuario.getEmail());
stmt.setString(3, usuario.getSenha());
stmt.execute();
stmt.close();
super.close();
}
e criei da seguinte forma a tabela:
CREATE TABLE usuario (ID NUMBER(10) NOT NULL, NOME VARCHAR2 (50) NOT NULL, EMAIL VARCHAR2 (50) UNIQUE NOT NULL, SENHA VARCHAR2 (12) NOT NULL); ALTER TABLE usuario ADD (CONSTRAINT usuario_pk PRIMARY KEY(ID)); CREATE SEQUENCE usuario_seq START WITH 1;
CREATE OR REPLACE TRIGGER usuario_bir
BEFORE INSERT ON usuario
FOR EACH ROW
BEGIN SELECT usuario_seq.NEXTVAL INTO :new.id FROM dual; END; /
Cerca de meia hora da minha vida perdida para descobrir que não é necessário colocar aspas simples, nem ponto e vírgula ao final do prepareStatement. Bom, acredito que pelo menos não me esquecerei mais aihauhuaa.
stmt = con.prepareStatement("INSERT INTO USUARIO VALUES (null, ?, ?, ?)");