Boa tarde amigos,
Venho mais uma vez solicitar a força de vocês.
Estou precisando salvar dados em duas tabelas ao mesmo tempo, porém, não posso utilizar o SELECT MAX devido ao risco de ter futuros problemas na aplicação, pois o desenvolvimento é WEB.
Estou trabalhando com DAO.
Seguem as tabelas
CREATE TABLE `edu_endereco` (
`idedu_endereco` INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`end_bairro` VARCHAR(100) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`end_rua` VARCHAR(100) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`end_cep` VARCHAR(10) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`end_numero` VARCHAR(10) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
`end_complemento` VARCHAR(100) COLLATE latin1_swedish_ci DEFAULT NULL,
PRIMARY KEY (`idedu_endereco`)
)ENGINE=InnoDB
AUTO_INCREMENT=4 CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
CREATE TABLE `edu_instituicao` (
`idedu_instituicao` INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`edu_endereco_idedu_endereco` INTEGER(10) UNSIGNED NOT NULL,
`inst_nome` VARCHAR(100) COLLATE latin1_swedish_ci NOT NULL DEFAULT '',
PRIMARY KEY (`idedu_instituicao`),
KEY `edu_instituicao_FKIndex1` (`edu_endereco_idedu_endereco`),
CONSTRAINT `edu_instituicao_ibfk_1` FOREIGN KEY (`edu_endereco_idedu_endereco`) REFERENCES `edu_endereco` (`idedu_endereco`) ON DELETE NO ACTION ON UPDATE NO ACTION
)ENGINE=InnoDB
AUTO_INCREMENT=2 CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
Seguem as classes
Classe Endereço
package br.com.gerais;
/**
*
* @author Fabiano
*/
public class Endereco {
private int idEndereco;
private String bairro;
private String rua;
private String cep;
private String numero;
private String complemento;
public int getIdEndereco() {
return idEndereco;
}
public void setIdEndereco(int idEndereco) {
this.idEndereco = idEndereco;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getComplemento() {
return complemento;
}
public void setComplemento(String complemento) {
this.complemento = complemento;
}
}
Classe InstituicaoBean
package br.com.instituicao;
import br.com.gerais.Endereco;
public class InstituicaoBean {
private int idInstituicao;
private String nomeInstituicao;
private Endereco endereco;
public int getIdInstituicao() {
return idInstituicao;
}
public void setIdInstituicao(int idInstituicao) {
this.idInstituicao = idInstituicao;
}
public String getNomeInstituicao() {
return nomeInstituicao;
}
public void setNomeInstituicao(String nomeInstituicao) {
this.nomeInstituicao = nomeInstituicao;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
}
Classe InstituicaoDao
package br.com.instituicao;
import br.com.conexao.Conexao;
import com.mysql.jdbc.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
*
* @author Fabiano
*/
public class InstituicaoDao {
public void adiciona (InstituicaoBean instituicao) throws SQLException{
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = Conexao.getConexao();
/**INSERE DADOS NA TABELA ENDEREÇO**/
String sql_endereco = "INSERT INTO edu_endereco (end_bairro, end_rua, end_cep, end_numero, end_complemento) VALUES (?,?,?,?,?)";
stmt = conn.prepareStatement(sql_endereco);
stmt.setString(1, instituicao.getEndereco().getBairro());
stmt.setString(2, instituicao.getEndereco().getRua());
stmt.setString(3, instituicao.getEndereco().getCep());
stmt.setString(4, instituicao.getEndereco().getNumero());
stmt.setString(5, instituicao.getEndereco().getComplemento());
stmt.executeUpdate();
/**INSERE DADOS NA TABELA INSTITUICAO**/
String sql_instituicao = "INSERT INTO edu_instituicao (edu_endereco_idedu_endereco, inst_nome) VALUES (?,?)";
stmt = conn.prepareStatement(sql_instituicao);
stmt.setString(2, instituicao.getNomeInstituicao());
stmt.executeUpdate();
stmt.close();
} catch (Exception e) {
System.out.println(e);
stmt.close();
}
finally{
Conexao.fecharConexao(conn, stmt);
}
}
}
Classe Teste
package br.com.instituicao;
//import br.com.gerais.Endereco;
import br.com.gerais.Endereco;
import java.sql.SQLException;
/**
* @author Fabiano
*/
public class Teste {
public static void main (String[] args) throws SQLException
{
/**DADOS ENDERECO**/
Endereco end = new Endereco();
end.setBairro("ITAIPAVA");
end.setRua("UNIÃO INDÚSTRIA");
end.setCep("13212180");
end.setNumero("121");
end.setComplemento("");
/**DADOS INSTITUICAO**/
InstituicaoBean inst = new InstituicaoBean();
inst.setNomeInstituicao("JOSÉ BONIFÁCIO");
inst.setEndereco(end);
/**INSERIR DADOS NO BANCO**/
InstituicaoDao instDao = new InstituicaoDao();
instDao.adiciona(inst);
}
}
[color=red]
Dúvidas
1 - Como recuperar o ID do endereço cadastrado sem utilizar o select max?
2 - Como colocar o id do endereço na setString?
3 - Como setar o (id do endereço ) na classe Teste?
[/color]
Por favor, me ajude pessoal, preciso disto para o meu TCC.
Desde já muito obrigado.