Falha com thread: entry corrupt or truncated

1 resposta
V

Fiz uma thread para executar as funções que acessam meus dados no banco, via jtds mesmo, e está dando certo, quer dizer, quae certo…
através da thread eu chamo a função que acessa o banco, passando uma String que é o nome de uma cidade…

public void onClick(View v) 
			{
				try
				{												
					new Thread(new Runnable( )  
			          {  
			              
			             public void run( )  
			             {    			            	
			            	sqs.gravar(et_nome.getText().toString());
			            	Log.e("Teste", et_nome.getText().toString());
			             }  
			              
			          } ).start();    
					et_nome.setText("");
										
				}
				catch (Exception e)
				{										
					msg("Erro banco", e.getMessage());
					//Log.e("SQL", e.getMessage());
				}
			}
		});

a função recebe essa string e grava uma cidade no banco, ok… o problema é que em algumas vez (frequentemente) essa string vai vazia para a função, e o registro gravado no banco fica com o campo nome vazio…
para testar mandei imprimir no log essa string que é passada para a função de gravação, e vi então q qdo ela vai vazia para a função, no log aparece o seguinte: +++ LOG: entry corrupt or truncated.

Alguém tem alguma sugestão de como posso garantir que essa string vá certinha para a função? já viram akela mensagem do Log?

1 Resposta

V

não sei por que a string tva indo vazia, corrompida… mas consegui contornar essa falha pegando o texto digitado no EditText fora da execução da thread… testei vaaaaaaaarias vezes e agora nenhuma vezx apareceu aquela mensagem no Log, sempre a string correta q eu digitei…

declarei String cid lá em cimão e depois fiz assim:

@Override
			public void onClick(View v) 
			{
				try
				{					
					cid = et_nome.getText().toString();					
					new Thread(new Runnable( )  
			          {  
			              
			             public void run( )  
			             {    			            	
			            	sqs.gravar(cid);
			            	Log.e("Teste", cid);
			             }  
			              
			          } ).start();    
					et_nome.setText("");
										
				}
				catch (Exception e)
				{										
					msg("Erro banco", e.getMessage());
					//Log.e("SQL", e.getMessage());
				}
			}
		});

assim ficou perfeito, gravando dados no meu banco sql server que está na minha máquina, pela aplicação android que roda no emulador, isso via jtds, como em Dektops

Criado 15 de março de 2012
Ultima resposta 15 de mar. de 2012
Respostas 1
Participantes 1