Como obter auto-generated keys em uma classe Java
As bases de dados fornecem uma característica de auto-incremento que é usado geralmente para IDs. JDBC API tem também um método para buscar o último ID gerado.
O exemplo abaixo gera um ID e usa-o para atualizar a coluna de uma tabela.
import java.sql.*;
public class testKeys
{
public static void main(String[] args)
{
DB db = new DB();
Connection conn =
db.dbConnect("jdbc:jtds:sqlserver://localhost:1433/tempdb","sa","");
db.performKeys(conn);
}
}
class DB
{
public DB() {}
public Connection dbConnect(String db_connect_string,
String db_userid,String db_password)
{
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection conn = DriverManager.getConnection(
db_connect_string, db_userid, db_password);
System.out.println("conectado");
return conn;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
public void performKeys(Connection conn)
{
String query;
PreparedStatement pstmt;
try
{
query = "insert into customer (name,category) "+
"values ('name1','temp')";
pstmt = conn.prepareStatement(query,
Statement.RETURN_GENERATED_KEYS);
pstmt.executeUpdate();
ResultSet keys = pstmt.getGeneratedKeys();
int count = 0;
keys.next();
int key = keys.getInt(1);
query ="update customer set age =? where id =?";
pstmt = conn.prepareStatement(query);
pstmt.setFloat(1, 26);
pstmt.setInt(2, key);
pstmt.executeUpdate();
keys.close();
pstmt.close();
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
};