Duvida SQL

Estou com um problema em uma consulta que estou fazendo no banco de dados. Estou tentando trazer para a tela todos os Produtores e seus respectivos Endereços através do seguinte comando SQL.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:odbc:testejava1","sabd","mto12350"); 

Statement stmt = con.createStatement(); 
            
 //Executando SQL:
 stmt.execute("SELECT FProdutor.NomeProd, " + 
" FProdEnd.Endereco FROM FProdutor " + 
" INNER JOIN FProdEnd ON FProdutor.CodProd = FProdEnd.CodProd " +
" WHERE (FProdutor.CodProd = FProdEnd.CodProd)");

Só que quando manda exibir o resultado ele pega somente o primeiro produtor da tabela FProdutor, cujo CodProd consta na tabela FProdEnd. Agradeço se alguém puder me ajudar.

Olá,
Coloca o codigo que tem o laço pra imprimir todos os resultados aí!!
Ai fica mais fácil!!
Otra coisa, vc já testou esse sql direto no banco???

Até mais!

[quote=“DouglasCar”]Estou com um problema em uma consulta que estou fazendo no banco de dados. Estou tentando trazer para a tela todos os Produtores e seus respectivos Endereços através do seguinte comando SQL.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:odbc:testejava1","sabd","mto12350"); 

Statement stmt = con.createStatement(); 
            
 //Executando SQL:
 stmt.execute("SELECT FProdutor.NomeProd, " + 
" FProdEnd.Endereco FROM FProdutor " + 
" INNER JOIN FProdEnd ON FProdutor.CodProd = FProdEnd.CodProd " +
" WHERE (FProdutor.CodProd = FProdEnd.CodProd)");

Só que quando manda exibir o resultado ele pega somente o primeiro produtor da tabela FProdutor, cujo CodProd consta na tabela FProdEnd. Agradeço se alguém puder me ajudar.[/quote]

Tenta assim :

stmt.execute(“SELECT FProdutor.NomeProd, " +
" FProdEnd.Endereco FROM FProdutor ,FProdEnd” +
" WHERE (FProdutor.CodProd = FProdEnd.CodProd)");

se funcionar posta avisando … do contrario posta de novo com mais algumas explicações pra gente te ajudar melhor

Brossi testei a sugestão que me mandaste, mas retornou o mesmo resultado. clv eu testei este Select no SQL Query Analyzer e funcionou. Estou utilizando este código para enviar uma string para impressora, mas para testar estou somente mandando imprimir o resultado na tela. Segue o código:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:odbc:testejava","sa","mtn1239"); 
 Statement stmt = con.createStatement(); 
 stmt.execute("SELECT FProdutor.NomeProd, " + 
 " FProdEnd.Endereco FROM FProdutor ,FProdEnd" + 
 " WHERE (FProdutor.CodProd = FProdEnd.CodProd)");

ResultSet results = stmt.getResultSet();
            
while (results.next()) {
        	        
String NomeProd = results.getString("NomeProd");
System.out.println("NomeProd:" + NomeProd);
                
String Endereco = results.getString("Endereco");
System.out.println("Endereco:" + Endereco);
                
String suaString1=Endereco; 
char[] ch1 =suaString1.toCharArray();
                
                for(int i=0;i<ch1.length;i++) { 
                    if(ch1[i]=='á') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Á') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ã') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Ã') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ç') { 
                        ch1[i]='c'; 
                    }
                    if(ch1[i]=='Ç') { 
                        ch1[i]='C'; 
                    }
                    if(ch1[i]=='é') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='É') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='ê') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='Ê') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='í') { 
                        ch1[i]='i'; 
                    }
                    if(ch1[i]=='Í') { 
                        ch1[i]='I'; 
                    }
                    if(ch1[i]=='ó') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ó') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ô') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ô') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='õ') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Õ') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ú') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ú') { 
                        ch1[i]='U'; 
                    }
                    if(ch1[i]=='ü') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ü') { 
                        ch1[i]='U'; 
                    }
                }
                System.out.println(ch1);
                
                
                String suaString=NomeProd; 
                char[] ch =suaString.toCharArray();
                
                for(int i=0;i<ch.length;i++) { 
                    if(ch[i]=='á') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Á') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ã') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Ã') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ç') { 
                        ch[i]='c'; 
                    }
                    if(ch[i]=='Ç') { 
                        ch[i]='C'; 
                    }
                    if(ch[i]=='é') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='É') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='ê') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='Ê') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='í') { 
                        ch[i]='i'; 
                    }
                    if(ch[i]=='Í') { 
                        ch[i]='I'; 
                    }
                    if(ch[i]=='ó') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ó') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ô') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ô') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='õ') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Õ') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ú') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ú') { 
                        ch[i]='U'; 
                    }
                    if(ch[i]=='ü') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ü') { 
                        ch[i]='U'; 
                    }
                } 
                System.out.println(ch);

Olá, DouglasCar (!)

um comentário sobre sua expressão sql:

SELECT FProdutor.NomeProd, 
FProdEnd.Endereco FROM FProdutor 
INNER JOIN FProdEnd ON FProdutor.CodProd = FProdEnd.CodProd 
WHERE (FProdutor.CodProd = FProdEnd.CodProd)

neste caso, como as cláusula join e where tratam da mesma comparação, obviamente fazem a mesma coisa. Daí

SELECT FProdutor.NomeProd, 
FProdEnd.Endereco FROM FProdutor 
INNER JOIN FProdEnd ON FProdutor.CodProd = FProdEnd.CodProd 

e

SELECT FProdutor.NomeProd, 
FProdEnd.Endereco FROM FProdutor , FProdEnd 
WHERE (FProdutor.CodProd = FProdEnd.CodProd)

resultam no mesmo conjunto de registros. Use um ou outra. as duas coisas ao mesmo tempo apenas farão o sgbd ter que trabalhar mais!

[quote]
Só que quando manda exibir o resultado ele pega somente o primeiro produtor da tabela FProdutor, [/quote]

Complementando o que colocou clv (?), o método execute (não seria o executeQuery, que retorna um objeto ResultSet?) apenas cria o objeto. Se é para apresentar o primeiro, o último ou todos é por conta do programador, que deverá providenciar num laço que itere todos objetos da coleção.

[quote]
… cujo CodProd consta na tabela FProdEnd. [/quote]

Tanto a cláusula INNER JOIN quanto WHERE A.ID = B.ID retornarão apenas registros que satisfaçam o critério, ou seja, somente registros que tenham em ambas valores correspondentes.

Se a intenção é apresentar TODOS produtores e endereços SE existirem
a sql deveria ser:

SELECT FProdutor.NomeProd, 
FProdEnd.Endereco FROM FProdutor 
LEFT JOIN FProdEnd ON FProdutor.CodProd = FProdEnd.CodProd 

(note a cláusula LEFT em vex de INNER: quer dizer,todos da tabela à esquerda, e da direita se encontrar algo)

ou, na versão sem a cláusula JOIN, que, entre os principais SGBDs, só não é implementada pelo oracle, apesar estar prevista desde ANSI92!

SELECT FProdutor.NomeProd, 
FProdEnd.Endereco FROM FProdutor , FProdEnd 
WHERE FProdutor.CodProd = FProdEnd.CodProd
OR FProdEnd is NULL

Agora, com a penúltima sql será possível obter todos produtores em ANSI sql, ou para os de 2ª categoria, pre-ANSI92, a última também deverá resolver!

bob

spier acontece que tenho vários registros nas duas tabelas sendo que o CodProd faz a ligação entre as duas, mas ao tentar trazer os dados para a tela no java, ele me retorna somente o primeiro registro que satisfaz a condição, sendo que com este mesmo Select no SQL Query Analyzer me é retornado todos os registros que satisfazem a condição, agradeço se alguém tiver uma dica.

Outra sugestão:

Tente simplificar sua sql, para tirar a dúvida quanto ao prroblema estar no seu código (até onde sei, execute é diferente de executeQuery, costumo usar o último e tem dado certo) ou o driver jdbc.

Por exemplo, (não testado)

...

ResultSet results = stmt.executeQuery("SELECT FProdutor.NomeProd FROM FProdutor");             

while (results.next()) { System.out.println(results(1).toString()); }
                   

spier testei o seu código, mas não funcionou, agradeço se tiveres outra dica.

Poste o código q não funcionou e o erro!

Já está acusando erro no:

System.out.println([b]results/b.toString());

Pede para criar método results(int)


ResultSet results = stmt.executeQuery("SELECT FProdutor.NomeProd FROM FProdutor");              

            while (results.next()) {
                System.out.println(results(1).toString());
                
                quant_copias = JOptionPane.showInputDialog( "Digite a Quantidade de Cópias" );                
                numero = Integer.parseInt( quant_copias );
        	        
                String NomeProd = results.getString("NomeProd");
                System.out.println("NomeProd:" + NomeProd);
                
                String Endereco = results.getString("Endereco");
                System.out.println("Endereco:" + Endereco);
                
                              
                String suaString1=Endereco; 
                char[] ch1 =suaString1.toCharArray();
                
                for(int i=0;i<ch1.length;i++) { 
                    if(ch1[i]=='á') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Á') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ã') { 
                        ch1[i]='a'; 
                    }
                    if(ch1[i]=='Ã') { 
                        ch1[i]='A'; 
                    }
                    if(ch1[i]=='ç') { 
                        ch1[i]='c'; 
                    }
                    if(ch1[i]=='Ç') { 
                        ch1[i]='C'; 
                    }
                    if(ch1[i]=='é') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='É') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='ê') { 
                        ch1[i]='e'; 
                    }
                    if(ch1[i]=='Ê') { 
                        ch1[i]='E'; 
                    }
                    if(ch1[i]=='í') { 
                        ch1[i]='i'; 
                    }
                    if(ch1[i]=='Í') { 
                        ch1[i]='I'; 
                    }
                    if(ch1[i]=='ó') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ó') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ô') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Ô') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='õ') { 
                        ch1[i]='o'; 
                    }
                    if(ch1[i]=='Õ') { 
                        ch1[i]='O'; 
                    }
                    if(ch1[i]=='ú') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ú') { 
                        ch1[i]='U'; 
                    }
                    if(ch1[i]=='ü') { 
                        ch1[i]='u'; 
                    }
                    if(ch1[i]=='Ü') { 
                        ch1[i]='U'; 
                    }
                }
                System.out.println(ch1);
               
                String suaString=NomeProd; 
                char[] ch =suaString.toCharArray();
                
                for(int i=0;i<ch.length;i++) { 
                    if(ch[i]=='á') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Á') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ã') { 
                        ch[i]='a'; 
                    }
                    if(ch[i]=='Ã') { 
                        ch[i]='A'; 
                    }
                    if(ch[i]=='ç') { 
                        ch[i]='c'; 
                    }
                    if(ch[i]=='Ç') { 
                        ch[i]='C'; 
                    }
                    if(ch[i]=='é') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='É') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='ê') { 
                        ch[i]='e'; 
                    }
                    if(ch[i]=='Ê') { 
                        ch[i]='E'; 
                    }
                    if(ch[i]=='í') { 
                        ch[i]='i'; 
                    }
                    if(ch[i]=='Í') { 
                        ch[i]='I'; 
                    }
                    if(ch[i]=='ó') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ó') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ô') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Ô') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='õ') { 
                        ch[i]='o'; 
                    }
                    if(ch[i]=='Õ') { 
                        ch[i]='O'; 
                    }
                    if(ch[i]=='ú') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ú') { 
                        ch[i]='U'; 
                    }
                    if(ch[i]=='ü') { 
                        ch[i]='u'; 
                    }
                    if(ch[i]=='Ü') { 
                        ch[i]='U'; 
                    }
                } 
                System.out.println(ch);

[quote=“DouglasCar”]Já está acusando erro no:

System.out.println([b]results/b.toString());

Pede para criar método results(int)

[code]

ResultSet results = stmt.executeQuery("SELECT FProdutor.NomeProd FROM FProdutor");

        while (results.next()) {
            System.out.println(results(1).toString());
            
            quant_copias = JOptionPane.showInputDialog( "Digite a Quantidade de Cópias" );                
            numero = Integer.parseInt( quant_copias );
    	        
            String NomeProd = results.getString("NomeProd");
            System.out.println("NomeProd:" + NomeProd);
            
            String Endereco = results.getString("Endereco");
            System.out.println("Endereco:" + Endereco);
            
                          
            String suaString1=Endereco; 
            char[] ch1 =suaString1.toCharArray();
            
            for(int i=0;i<ch1.length;i++) { 
                if(ch1[i]=='á') { 
                    ch1[i]='a'; 
                }
                if(ch1[i]=='Á') { 
                    ch1[i]='A'; 
                }
                if(ch1[i]=='ã') { 
                    ch1[i]='a'; 
                }
                if(ch1[i]=='Ã') { 
                    ch1[i]='A'; 
                }
                if(ch1[i]=='ç') { 
                    ch1[i]='c'; 
                }
                if(ch1[i]=='Ç') { 
                    ch1[i]='C'; 
                }
                if(ch1[i]=='é') { 
                    ch1[i]='e'; 
                }
                if(ch1[i]=='É') { 
                    ch1[i]='E'; 
                }
                if(ch1[i]=='ê') { 
                    ch1[i]='e'; 
                }
                if(ch1[i]=='Ê') { 
                    ch1[i]='E'; 
                }
                if(ch1[i]=='í') { 
                    ch1[i]='i'; 
                }
                if(ch1[i]=='Í') { 
                    ch1[i]='I'; 
                }
                if(ch1[i]=='ó') { 
                    ch1[i]='o'; 
                }
                if(ch1[i]=='Ó') { 
                    ch1[i]='O'; 
                }
                if(ch1[i]=='ô') { 
                    ch1[i]='o'; 
                }
                if(ch1[i]=='Ô') { 
                    ch1[i]='O'; 
                }
                if(ch1[i]=='õ') { 
                    ch1[i]='o'; 
                }
                if(ch1[i]=='Õ') { 
                    ch1[i]='O'; 
                }
                if(ch1[i]=='ú') { 
                    ch1[i]='u'; 
                }
                if(ch1[i]=='Ú') { 
                    ch1[i]='U'; 
                }
                if(ch1[i]=='ü') { 
                    ch1[i]='u'; 
                }
                if(ch1[i]=='Ü') { 
                    ch1[i]='U'; 
                }
            }
            System.out.println(ch1);
           
            String suaString=NomeProd; 
            char[] ch =suaString.toCharArray();
            
            for(int i=0;i<ch.length;i++) { 
                if(ch[i]=='á') { 
                    ch[i]='a'; 
                }
                if(ch[i]=='Á') { 
                    ch[i]='A'; 
                }
                if(ch[i]=='ã') { 
                    ch[i]='a'; 
                }
                if(ch[i]=='Ã') { 
                    ch[i]='A'; 
                }
                if(ch[i]=='ç') { 
                    ch[i]='c'; 
                }
                if(ch[i]=='Ç') { 
                    ch[i]='C'; 
                }
                if(ch[i]=='é') { 
                    ch[i]='e'; 
                }
                if(ch[i]=='É') { 
                    ch[i]='E'; 
                }
                if(ch[i]=='ê') { 
                    ch[i]='e'; 
                }
                if(ch[i]=='Ê') { 
                    ch[i]='E'; 
                }
                if(ch[i]=='í') { 
                    ch[i]='i'; 
                }
                if(ch[i]=='Í') { 
                    ch[i]='I'; 
                }
                if(ch[i]=='ó') { 
                    ch[i]='o'; 
                }
                if(ch[i]=='Ó') { 
                    ch[i]='O'; 
                }
                if(ch[i]=='ô') { 
                    ch[i]='o'; 
                }
                if(ch[i]=='Ô') { 
                    ch[i]='O'; 
                }
                if(ch[i]=='õ') { 
                    ch[i]='o'; 
                }
                if(ch[i]=='Õ') { 
                    ch[i]='O'; 
                }
                if(ch[i]=='ú') { 
                    ch[i]='u'; 
                }
                if(ch[i]=='Ú') { 
                    ch[i]='U'; 
                }
                if(ch[i]=='ü') { 
                    ch[i]='u'; 
                }
                if(ch[i]=='Ü') { 
                    ch[i]='U'; 
                }
            } 
            System.out.println(ch);

[/code][/quote]

OBS:

voce pode cortar todos seus if(ch[i] == usando o seguinte:

char [] latin = new char[] {'á', 'à', 'â', 'ã', 'ä');
char [] ascii = new char[] {'a', 'a', 'a', 'a', 'a');
int len = latin.length;
for(int x = 0; x < len; x++) {
    NomeProd = NomeProd.replace(latin[x], ascii[x]);
}

Só precisa adicionar o resto das letras nos char []

[quote=“DouglasCar”]Já está acusando erro no:

System.out.println([b]results/b.toString());

Pede para criar método results(int)
[/code][/quote]

oops… use o metodo results.getString(1);

da uma olhada na API java.sql, as seguintes classes: Statement, ResultSet e Connection