Bom dia caro amigos do guj, estou com um probleminha e gostaria de saber se alguém pode me ajudar.
Eu tenho um banco ODBC, e nele está contido 4 tabelas. Eu gostaria de ter uma idéia de como faço para acessa-las e trocar informaçoes simultaneas ? Eu estive pesquisando e , utilizar batch não vai funcionar. Por causa do seguinte.
vou da um exemplo: tenho a tabela Produtor, e uma tabela Propriedade.
Eu preciso ir em produtor e checar se o “nome_produtor” da tabela Produtor é o mesmo de " nome_proprietario_imovel_principal " da tabela Propriedade, e se for , eu preciso jogar o dado na outra tabela chamada “FRENTE” no campo ID_PROD.
Vocês me entenderam ?
O problema que eu acho é o seguinte:
se eu utilizo o PreparedStatement() para o select nome_produtor FROM Produtor;
e dpois utilizo um
Produtor.setNome(rs.getString(1));
eu terei que fz outro preparedStatment para da o outro select em Propriedade?
e como irei comparar o outro dado ? outro ResultSet() ? … Gostaria que alguém pudesse me ajudar.
Ficarei muito grato.
Pq vc não fas as 2 consultas e a comparação em uma unica consulta???
Se você puder me ajudar, vou te colocar um trecho para você ter uma idéia da minha dúvida.
é essa ó:
try {
Produtor produtor = new Produtor();
PreparedStatement Pstmt1 = this.conexao.prepareStatement("SELECT nome_produtor FROM produtor WHERE cod_produtor = 10");
ResultSet rs = Pstmt1.executeQuery();
while(rs.next()){
produtor.setNomeProdutor(rs.getString(1));
}
PreparedStatement Pstmt2 = this.conexao.prepareStatement("SELECT nome_proprietario_imovel_principal FROM Propriedade WHERE cod_produtor = 10");
rs = Pstmt2.executeQuery();
while(rs.next()){
String nome = rs.getString(1);
if (nome.equals(produtor.getNomeProdutor())) {
System.out.println(produtor.getNomeProdutor());
}
}
Pstmt1.close();
Pstmt2.close();
agradeço se puder ajudar =D e me da uma luz.
mi fala uma coisa, é o mesmo nome tanto do proprietario quanto do produtor? só estão em tabels diferentes??
Correto. quantidade é a mesma. Na verdade a verificação é apenas para saber se é o mesmo nome, se for eu irei colocar um valor " 1 " em outra tabela, se não for, eu coloco o valor 2. O problema é que, eu tenho várias verificações desse tipo, essa é a apenas um exemplo. eu vou ter que verificar terreno, verificar estado, essas coisas, e todas caem no mesmo conceito. Ou seja, eu estou tendo que utilizar milhares de PreparedStatements, milhares de ResultSets() … entendeu?
aqui um trecho do que eu to tentando fazer.
try {
Produtor produtor = new Produtor();
PreparedStatement Pstmt1 = this.conexao.prepareStatement("SELECT nome_produtor FROM produtor WHERE cod_produtor = 10");
ResultSet rs = Pstmt1.executeQuery();
while(rs.next()){
produtor.setNomeProdutor(rs.getString(1));
}
PreparedStatement Pstmt2 = this.conexao.prepareStatement("SELECT nome_proprietario_imovel_principal FROM Propriedade WHERE cod_produtor = 10");
rs = Pstmt2.executeQuery();
while(rs.next()){
String nome = rs.getString(1);
if (nome.equals(produtor.getNomeProdutor())) {
Pstmt2 = this.conexao.prepareStatement("INSERT INTO FRENTE(CHAVE,ID_PRO) VALUES(?,?)");
Pstmt2.setString(1, "700.000");
Pstmt2.setString(2, "1" );
Pstmt2.execute();
//System.out.println(produtor.getNomeProdutor());
}
}
Pstmt1.close();
Pstmt2.close();
select nome_produtor, nome_proprietario_imovel_principal FROM produtor prod, proprietario prop WHERE prod.cod_produtor=10
depois vc fais a verificação, se nescessário armazena os nomes em variaveis diferentes e compara o valor delas
qualquer coisa só fala
Show de bola. Quem sabe sabe ! Agradeço ae a ajuda. Vou ver oq consigo fazer hoje. Obrigado ae Wiliam. abraços.
Estou com outro problema, envolvendo a mesma classe.
é o seguinte.
o método está assim
public void insereDados(ConexaoDAO conexao) {
try {
Produtor produtor = new Produtor();
PreparedStatement Pstmt1 = this.conexao
.prepareStatement("SELECT nome_produtor,nome_proprietario_imovel_principal FROM Produtor prod,Propriedade prop WHERE prod.cod_produtor < 10 AND prop.cod_produtor < 10");
ResultSet rs = Pstmt1.executeQuery();
int chave = 700000;
while (rs.next()) {
produtor.setNomeProdutor(rs.getString(1));
// String nome = rs.getString(2);
if (rs.getString(2) == null){
PreparedStatement Pstmt2 = this.conexao.prepareStatement("INSERT INTO Propriedade(nome_proprietario_imovel_principal) VALUES(' ')");
Pstmt2.execute();
}
if (rs.getString(2).equals(produtor.getNomeProdutor())) {
Pstmt1 = this.conexao
.prepareStatement("INSERT INTO FRENTE(CHAVE,ID_PRO) VALUES(?,?)");
Pstmt1.setString(1, Integer.toString(chave));
Pstmt1.setString(2, "1");
Pstmt1.execute();
}else {
Pstmt1.setString(1, Integer.toString(chave));
Pstmt1.setString(2, "2");
Pstmt1.execute();
}
chave++;
}
// PreparedStatement Pstmt2 =
// this.conexao.prepareStatement("SELECT nome_proprietario_imovel_principal FROM Propriedade WHERE cod_produtor = 10");
// rs = Pstmt2.executeQuery();
// while(rs.next()){
// String nome = rs.getString(1);
// if (nome.equals(produtor.getNomeProdutor())) {
// Pstmt2 =
// this.conexao.prepareStatement("INSERT INTO FRENTE(CHAVE,ID_PRO) VALUES(?,?)");
// Pstmt2.setString(1, "700.000");
// Pstmt2.setString(2, "1" );
// Pstmt2.execute();
// System.out.println(produtor.getNomeProdutor());
// }
// }
Pstmt1.close();
// Pstmt2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
e o problema que da
é que para na verificação do " null "
programa não continua .

alguem para ajudar ?