Bom dia, pessoal !
Eu tenho um sistema rodando em MYSQL que vai ser migrado pro Oracle e estou tendo problemas com o Auto-incremento. Tem como eu passar uma sequence.nextval pelo PreparedStatement ? Por exemplo :
String sql = "INSERT INTO un_biblias (id, nome) VALUES (? , ?)";
PreparedStatement ps = ....prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, "Nome");
pra
String sql = "INSERT INTO un_biblias (id, nome) VALUES (? , ?)";
PreparedStatement ps = ....prepareStatement(sql);
ps.setString(1, "sequence.nextval");
ps.setString(2, "Nome");
Sendo que o setString, vai inserir aspas(") na instrução. Tem algum outro modo sem ser colocar o nextval diretamente na instrução ou fazer uma consulta pra pegar o id ?
Muito obrigado e Feliz Ano Novo !!!
Cara que eu saiba no oracle tem como vc colocar o campo auto-increment, sem que seja necessario fazer referencia a sequencia.
no Postgree eu faco assim :
CREATE SEQUENCE sqc_produtos
start 1
increment 1
maxvalue 9999;
ai e so criar a tabela.
CREATE TABLE produtos (
ID INTEGER DEFAULT NEXTVAL(‘sqc_produtos’) NOT NULL,
DESCRICAO varchar(100) NOT NULL
);
quando for dar insert vai ser assim :
PreparedStatement pstmt = conn.prepareStatement
(“INSERT INTO produtos (descricao) VALUES (?)”);
pstmt.setInt (1, “teste no postgreeSql”);
espero que tenha ajudado a pelo menos ter uma base !!!
no oracle a unica coisa que deve mudar e a sintaxe.
Obrigado pela resposta, javabits !
Mas eu já tinha lido a sua resposta em um tópico anterior e já tinha tentado fazer o mesmo no Oracle.
Mesmo assim obrigado !!
Olá andre_marrento,
em vez de:
String sql = "INSERT INTO un_biblias (id, nome) VALUES (? , ?)";
tenta assim:
[code]String sql = "INSERT INTO un_biblias (id, nome) VALUES (sequence.nextval, ?)";
ps.setString(1, "Nome");
[/code]
falow;
Valeu, pablodrumond !!
Mas o problema era que eu queria evitar essa solução : ter reescrever a instrução SQL pra cada banco de Dados.
Mas valeu pela ajuda !!