Jsp+oracle

Caro amigos

Estou iniciando em desenvolvimento java com oracle, eu fiz uma coisa bem simples que é gravar dados no banco de dados, porém a dúvida,no banco de dados tenho uma informação que não pode repetir que seria idCarro, automaticamente ao inserir a informação ele criaria uma sequencia, essa sequência eu fiz no oracle, mas como chamar, como fazer isso acontecer no java, vou estar colocando o codigo que fiz pra inserir os dados e a informação do banco

create table clCarros(
idcarro number,
nome varchar2(50),
vlDiaria number(13,2)
)

create sequence seq_clCarros
start with 1

agora o java pra inserir a informação

try{
            //conectar ao banco
            Connection con= ConnectionFactory.getConnection();

            //prepara o Statement ara inserção
            PreparedStatement stmt = con.prepareStatement("insert into clcarros(idcarro,nome,vlDiaria)values(?,?,?)");

            //preenche os valores
            //stmt.setLong(1, (int)1);
            stmt.setInt(1, (int)1);
            stmt.setString(2, "passat");
            stmt.setInt(3, (int) 2.50);

            //executa o stmt
            stmt.execute();
            con.close();

            System.out.println("Gravado dados no banco");

Amigo,

Se a sua sequence já tiver sido criada basta usá-la assim:

PreparedStatement stmt = con.prepareStatement("insert into clcarros(idcarro,nome,vlDiaria)values(nomeDaSequence.NextVal,?,?)");

Caso sua sequence não esteja criada pode criá-la da sequente forma:

CREATE SEQUENCE nomeDaSequencia START WITH 1 INCREMENT BY 1 MAXVALUE 999 CYCLE CACHE 10 ;

Alguns desses valores são facultivos e vai depender da sua necessidade.

Espero ter ajudado.

Fala grande obrigado por ter respondido,
Entao eu fiz exatamente como tinha dito, coloquei a nomesequencia.nextval,mas ele esta dando um erro de indice?

java.sql.SQLException: Índice de coluna inválido
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:226)
        at oracle.jdbc.driver.OraclePreparedStatement.setIntInternal(OraclePreparedStatement.java:4105)
        at oracle.jdbc.driver.OraclePreparedStatement.setInt(OraclePreparedStatement.java:4096)
        at Insere_clcarros.main(Insere_clcarros.java:37)
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Manda o código de como ficou a chamada, para ver se posso te ajudar.

Mas será que vc num esqueceu de atualizar o indice?

            //stmt.setInt(1, (int)1);    Esse num existe mais né? Então tem que estar como está abaixo.
            stmt.setString(1, "passat");   
            stmt.setInt(2, (int) 2.50);   

Entao grande, coloquei exatamente como vc disse, mesmo assim está dando erro de indice?! veja o codigo inteiro

[quote]

    try{
        //conectar ao banco
        Connection con= ConnectionFactory.getConnection();

        //prepara o Statement ara inserção
        PreparedStatement stmt = con.prepareStatement("insert into clcarros(idcarro,nome,vlDiaria)values(seq_clcarro.nextval,?,?)");

        //preenche os valores
        //stmt.setLong(1, (int)1);
      //  stmt.setInt(1, (int)1);
        stmt.setString(2, "passat");
        stmt.setInt(3, (int) 2.50);

        //executa o stmt
        stmt.execute();
        con.close();

        System.out.println("Gravado dados no banco");

    }catch(SQLException e){
        e.printStackTrace();

[/code]

desculpe agora sim , consegue ver direito o código.

try{ 
//conectar ao banco 
Connection con= ConnectionFactory.getConnection(); 

//prepara o Statement ara inserção 
PreparedStatement stmt = con.prepareStatement("insert into clcarros(idcarro,nome,vlDiaria)values(seq_clcarro.nextval,?,?)"); 

//preenche os valores 
//stmt.setLong(1, (int)1); 
// stmt.setInt(1, (int)1); 
stmt.setString(2, "passat"); 
stmt.setInt(3, (int) 2.50); 

//executa o stmt 
stmt.execute(); 
con.close(); 

System.out.println("Gravado dados no banco"); 

}catch(SQLException e){ 
e.printStackTrace(); 

Então corrija sua linha 11 e 12 conforme coloquei no post acima.

O indice 3 não existe mais. Apenas o 1 e 2, e você está setando um int na posição 3.

Mas você agora só tem duas interrogações no seu sql.

// de
stmt.setString(2, "passat");   
stmt.setInt(3, (int) 2.50); 

// para 
stmt.setString(1, "passat");   
stmt.setInt(2, (int) 2.50); 

Espero que agora resolva.

Grande valeu mesmo cara!!!

Ajudou e muito, conseguir perfeitamente incluir sem problemas
Fica na paz, valeu!!