Boa noite galera, estou com um grande problema na hora de setar os dados que tenho na memoria jogados pelo banco, que estão na variavel cons,
String cons = "select * from cad_clientes where cod ="+ TxtCadCliCodigo.getText();
String[] campos = {"NOME","CPF","RG","RUA","N","BAIRRO","TELEFONE1","TELEFONE2","EMAIL","consultaspc","OBS"};
cons = con.fazerConsultaBanco(cons, campos);
se eu der um System.out.prinln(cons);
ele vai preencher tudo na mesma linha com separação com ;
como faço para os meus dados ir de 1 a 1 para varias jTextFilds?
agradeço a ajuda galera
galera o que eu preciso pra mim é muito mas para muito é pouco,
é simplesmente jogar dados armazenados em um vetor em algumas jtextefields sem os ;
eu consegui faze essa façanha criando uma StringTokenizer st = new StringTokenizer(cons, “;”); e jjogando sempre o proximo valor para a proxima area, mas se ficar uma em branco no meio pifa tudo…
Giboty
Fevereiro 4, 2011, 8:33am
#4
Faz manual por exemplo
jTextField1.setText(cons[0]);
jTextField1.setText(cons[1]);
jTextField1.setText(cons[2]);
jTextField1.setText(cons[3]);
assim por diante definindo claro qual o jTextField que irá receber determinado retorno do select.
quaresma:
galera o que eu preciso pra mim é muito mas para muito é pouco,
é simplesmente jogar dados armazenados em um vetor em algumas jtextefields sem os ;
eu consegui faze essa façanha criando uma StringTokenizer st = new StringTokenizer(cons, “;”); e jjogando sempre o proximo valor para a proxima area, mas se ficar uma em branco no meio pifa tudo…
Desculpe, mas isto não ajuda em nada.
Ninguém aqui no guj tem a obrigação de responder.
Depois, esta pergunta já foi realizada várias vezes, basta dar uma simples pesquisada aqui ou até mesmo no google.
A solução apontada pelos colegas de GUJ é muito mais viável e inteligente. Vincular beans seria o ideal, usar um array para isto não é uma boa prática de programação.
Mas, se há a necessidade (ou você quer fazer isto desta forma), pode indicar manualmente qual textfield receberá o valor correspondente do array.
[quote=Giboty]Faz manual por exemplo
jTextField1.setText(cons[0]);
jTextField1.setText(cons[1]);
jTextField1.setText(cons[2]);
jTextField1.setText(cons[3]);
assim por diante definindo claro qual o jTextField que irá receber determinado retorno do select.
[/quote]
o meu velho eu tentei fazer exatamente oque vc dice mas nao rolou
[code] String cons = “select * from cad_clientes where cod =”+ TxtCadCliCodigo.getText();
String[] campos = {“NOME”,“CPF”,“RG”,“RUA”,“N”,“BAIRRO”,“TELEFONE1”,“TELEFONE2”,“EMAIL”,“consultaspc”,“OBS”};
cons = con.fazerConsultaBanco(cons, campos);
TxtCadCliNome.setText(cons[0]);[/code]
e quanto o nosso amigo drsmachado relacha ae meu, eu to com uma duvida ninguem é obrigado a responder.
Eu estou bem relaXado.
Por que não rolou?
Qual a dificuldade?
Posta teu código todo aí?
String cons = “select * from cad_clientes where cod =”+ TxtCadCliCodigo.getText();
String[] campos = {“NOME”,“CPF”,“RG”,“RUA”,“N”,“BAIRRO”,“TELEFONE1”,“TELEFONE2”,“EMAIL”,“consultaspc”,“OBS”};
cons = con.fazerConsultaBanco(cons, campos);
StringTokenizer st = new StringTokenizer(cons, “;”);
//tentei de duas maneiras 1°
int x1 = 0;
while(st.hasMoreElements()){
TxtCadCliObs.setText(st.nextToken());
TxtCadCliEmail.setText(st.nextElement().toString());
x1 ++;
// segunda
TxtCadCliCpf.setText(cons[1]);
TxtCadCliRg.setText(cons[2]);
TxtCadCliRua.setText(cons[3]);
}
E quanto ao uso de split e colocar em um array de string?
Após isto, preencher os textfields com cada elemento correspondente, assim, todos os dados que vierem em branco não irão afetar a continuidade da coisa.
o problema que eu ainda nao saquei como faria com slipt.
tem como me dar um exemplo ?
String exemplo = "aa;bb;cc;dd;ee;ff;gg;";
String[] arrExemplo = exemplo.split(";");
jTextFieldExemplo1.setText(arrExemplo[0]);
jTextFieldExemplo2.setText(arrExemplo[1]);
jTextFieldExemplo3.setText(arrExemplo[2]);
jTextFieldExemplo4.setText(arrExemplo[3]);
jTextFieldExemplo5.setText(arrExemplo[4]);
jTextFieldExemplo6.setText(arrExemplo[5]);
jTextFieldExemplo7.setText(arrExemplo[6]);
Explicando:
o método split(“regex”); da classe String recebe como parâmetro um regex (funciona com caracteres também, entre aspas duplas) e, ao ser executado, “quebra” a string original em partes. O retorno é um array do tipo String cujo tamanho é determinado pelo número de substrings separadas pelo regex houverem na string que chama o método.
o meu velho oque tu me passo intendi show de bola, mas o problema é este
[code] String cons = “select * from cad_clientes where cod =”+ TxtCadCliCodigo.getText();
String campos = “NOME;CPF;RG;RUA;N;BAIRRO;TELEFONE1;TELEFONE2;EMAIL;consultaspc;OBS”;
String[] arrExemplo = campos.split(";");
cons = con.fazerConsultaBanco(cons, arrExemplo);
TxtCadCliNome.setText(arrExemplo[0]);[/code]
não bomba ele escreve na tela NOME
Sim, pois você está quebrando a String campos. e o primeiro elemento dela é “NOME”.
Não sei como está tua consulta no banco de dados (o ResultSet não retorna uma String).
Quando fizer a consulta é que você vai obter os dados para preencher as textfields.
Quando eu usava este tipo de coisa (sim, já usei) fazia o seguinte, na classe que pegava os dados do bd:
public String consutaBd(String cons){
ResultSet rs = stm.execute(cons);
String str = "";
while(rs.next()){
str += rs.getString(1) + "º";
str += rs.getString(3) + "º";
str += rs.getString(2) + "º";
...
}
return str;
E pegava, na classe que manipulava as textfields:
...
String cons = "select * from cad_clientes where cod ="+ TxtCadCliCodigo.getText();
String res = classeDeConsulta.consultaBd(cons);
String[] arrExemplo = res.split(";");
TxtCadCliNome.setText(arrExemplo[0]);
a minha classe de fazer consulta é assim
public String fazerConsultaBanco(String SQL, String[] campo){
String resultado = "";
try{
PreparedStatement smtm = (PreparedStatement) this.conn.prepareStatement(SQL);
ResultSet rs = smtm.executeQuery();
while (rs.next()) {
for(int x = 0; x < campo.length; x++)
resultado += rs.getString(campo[x]) + ";";
}
rs.close();
smtm.close();
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,"Não foi pssível executar a consulta sql "+sqle+", comando sql passado.: "+SQL);
}
/*
* O método retornará uma String formatada assim: XX;XXX;XXX ou seja, separada por ;
* Usar uma StringTokenizer para pegar os valores.
* Ex:
String str = cc.fazerConsultaBanco("SELECT CAMPO FROM TABELA","CAMPO");
StringTokenizer st = new StringTokenizer(str,";");
while(st.hasMoreElements())
System.out.println("Campo: " + st.nextElement());
*/
return resultado;
o problema que ele necessita um campo[]
[code] String cons = “select * from cad_clientes where cod =”+ TxtCadCliCodigo.getText();
String[] campos = {“NOME”,“CPF”,“RG”,“RUA”,“N”,“BAIRRO”,“TELEFONE1”,“TELEFONE2”,“EMAIL”,“consultaspc”,“OBS”};
cons = con.fazerConsultaBanco(cons, campos);
String exemplo = cons;
String[] arrExemplo = exemplo.split(";");
TxtCadCliNome.setText(arrExemplo[0]);[/code]
oo meu velho fiz assim e funfo, teria algum jeito mais simples?
muito obrigado pela ajuda irmao
quer mais simples do que isso?!?