tem algum metodo do preparedStatement que me retorne o codigo autoIncrement de uma linha que acabei de inseri no banco de dados?
vou tentar explicar melhor.
tenho uma tabela Cliente no banco com os seguinte atributos
codigo (Integer) auto increment
data2(Date)
quando eu fosse inserir um cliente eu queria q no proprio metodo de inserção ele me retornasse o codigo do cliente q acabou de ser inserido no banco. tem jeito???
vou postar meu metodo de inserção.
publicvoidcreate(Objectobj)throwsIOException{if(objinstanceofnegocio.Cliente){negocio.Clientecliente=(negocio.Cliente)obj;Filefile=newFile("c:/Arquivos de programas/sql.properties");Propertiesproperties=newProperties();FileInputStreamfis=null;PreparedStatementstmt=null;try{Conectarconn=newConectar();connection=conn.Getconectar();fis=newFileInputStream(file);properties.load(fis);fis.close();stmt=connection.prepareStatement(properties.getProperty("CLIENTE_CREATE"));stmt.setInt(1,cliente.getEndereco().getCodigo());stmt.setDate(2,newjava.sql.Date(cliente.getData().getTime()));stmt.executeUpdate();}catch(IllegalAccessExceptionex){ex.printStackTrace();}catch(InstantiationExceptionex){ex.printStackTrace();}catch(SQLExceptione){thrownewIOException("ClienteDAO CREATE: "+e);}finally{close(stmt,null,connection);}}}
tem algum metodo do preparedStatement que me retorne o codigo autoIncrement de uma linha que acabei de inseri no banco de dados?
vou tentar explicar melhor.
tenho uma tabela Cliente no banco com os seguinte atributos
codigo (Integer) auto increment
data2(Date)
quando eu fosse inserir um cliente eu queria q no proprio metodo de inserção ele me retornasse o codigo do cliente q acabou de ser inserido no banco. tem jeito???
vou postar meu metodo de inserção.
publicvoidcreate(Objectobj)throwsIOException{if(objinstanceofnegocio.Cliente){negocio.Clientecliente=(negocio.Cliente)obj;Filefile=newFile("c:/Arquivos de programas/sql.properties");Propertiesproperties=newProperties();FileInputStreamfis=null;PreparedStatementstmt=null;try{Conectarconn=newConectar();connection=conn.Getconectar();fis=newFileInputStream(file);properties.load(fis);fis.close();stmt=connection.prepareStatement(properties.getProperty("CLIENTE_CREATE"));stmt.setInt(1,cliente.getEndereco().getCodigo());stmt.setDate(2,newjava.sql.Date(cliente.getData().getTime()));stmt.executeUpdate();}catch(IllegalAccessExceptionex){ex.printStackTrace();}catch(InstantiationExceptionex){ex.printStackTrace();}catch(SQLExceptione){thrownewIOException("ClienteDAO CREATE: "+e);}finally{close(stmt,null,connection);}}}
desde já agradeço
Oi
Caso você esteja usando MySQL deve funcionar colocando as linhas abaixo após o INSERT
stmt.executeUpdate();
stmt = connection.prepareStatement("CALL IDENTITY()");
...
ResultSet result = stmt.executeQuery();
int id = result.getInt(1);
A
andrertd
o sistema diz q não reconhece o IDENTITY()
Andre_Fonseca
qual Banco de Dados está usando?
A
andrertd
My sql
M
markin1
use
stmt = connection.prepareStatement(properties.getProperty("CLIENTE_CREATE", PreparedStatement.RETURN_GENERATED_KEYS));Declare uma variável do tipo ResultSet e depois de inserir//recupera o Id:
rs = pstmt.getGeneratedKeys();
rs.next();
bean.setId(rs.getInt(1));
A
andrertd
puta cara valeu mesmo em.. me quebro um galhão... mas deu um erro quando fui passar PreparedStatement.RETURN_GENERATED_KEYS dentro do metodo getProperty. então fiz desse jeito e deu certo do mesmo jeito..
mais uma vez agradeço pela ajuda.
importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.Collection;importjava.util.Properties;importjava.util.Vector;/** * * @author André */publicclassClienteDAOextendsDAO{privateConnectionconnection=null;@Overridepublicvoidcreate(Objectobj)throwsIOException{if(objinstanceofnegocio.Cliente){negocio.Clientecliente=(negocio.Cliente)obj;Filefile=newFile("c:/Arquivos de programas/sql.properties");Propertiesproperties=newProperties();FileInputStreamfis=null;PreparedStatementstmt=null;try{Conectarconn=newConectar();connection=conn.Getconectar();fis=newFileInputStream(file);properties.load(fis);fis.close();stmt=connection.prepareStatement(properties.getProperty("CLIENTE_CREATE"));stmt.setInt(1,cliente.getEndereco().getCodigo());stmt.setDate(2,newjava.sql.Date(cliente.getData().getTime()));stmt.setString(3,cliente.getNome());stmt.setString(4,cliente.getTelefone());stmt.setString(5,cliente.getFax());stmt.setString(6,cliente.getCnpj());stmt.setString(7,cliente.getInscricao());stmt.setString(8,cliente.getContato());stmt.setString(9,cliente.getObs());stmt.executeUpdate();ResultSetrs=stmt.getGeneratedKeys();rs.next();intchave=rs.getInt(1);}catch(IllegalAccessExceptionex){ex.printStackTrace();}catch(InstantiationExceptionex){ex.printStackTrace();}catch(SQLExceptione){thrownewIOException("ClienteDAO CREATE: "+e);}finally{close(stmt,null,connection);}}}}