String

:smiley: [color=“red”][/color]

Qual o tamanho do tipo String?
Tenho uma linha de Select enorme, quando coloco na variável String um bom
pedaço não é copiado, como contorno isso, qual a saída? Tentei usar o string
buffer mas não deu certo, quando coverto para string um pedaço vai embora.

FileWriter fos = new FileWriter(“c:\appletteste.txt”);
StringBuffer texto = new StringBuffer();

texto.append(“select t_nf.* , t_cod_oper.v_descricao ,t_transp.v_endereco
from
t_nf,t_cliente_fornecedor,t_cod_oper,t_transp where
t_cliente_fornecedor.v_cgc_cpf_fatur=t_nf.v_codclifornec and
t_nf.v_cod_oper=t_cod_oper.v_cod_oper and
t_nf.v_codtransp=t_transp.v_codtransp and f_num_nf=157”)

String selectStatement = new String(texto);

fos.write(texto.toString(), 0, msg.length());
fos.close();

OBS: mandei jogar a string em um arquivo a título de teste,

Obrigado Fábio

Olá Fábio, tinham vários erros no seu código eheh dei uma arrumada, deve funcionar:


import java.io.FileWriter;
import java.io.IOException;

public class Teste {

	public Teste() {
		init();
	}

	private void init() {

		FileWriter fos = null;

		try {
			fos = new FileWriter("c:\appletteste.txt");
		} catch (IOException e) {
		}
		StringBuffer texto = new StringBuffer();

		texto.append(
			"select t_nf.* , t_cod_oper.v_descricao ,t_transp.v_endereco "
				+ "	from t_nf,t_cliente_fornecedor,t_cod_oper,t_transp where t_cliente_fornecedor."
				+ "v_cgc_cpf_fatur =	t_nf.v_codclifornec and t_nf.v_cod_oper = "
				+ "t_cod_oper.v_cod_oper and t_nf.v_codtransp = t_transp.v_codtransp and f_num_nf =157 ");

		String selectStatement = new String(texto);
		texto = null;

		try {
			fos.write(selectStatement.toString(), 0, selectStatement.length());
			fos.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {

		Teste teste = new Teste();

	}

}

Não deu certo, o problema continua sendo o mesmo, um boa parte do meu select some, creio que deva ser pelo tamanho do tipo string, como eu posso montar esse imenso select?

Obrigado

Fabio :evil:

Então é em seu sistema operacional :idea:

Testei em máquina RedHat 7.3, e máquinas com windows xp e 2000, 8)

O tamanho da string é ilimitado (bem pelo menos até onde sua memória suporta).

Já usei selects muito maioes que esse e tudo funciona OK.

Deve ser algo externo ao java.

Elvis,

Vc tem algum exemplo completo com o seu grande select?
o meu ainda continua commendo um pedaço, a minha string é

          String selectStatement = "select t_nf.* , t_cod_oper.v_descricao ,t_transp.v_endereco "+
                                   "from t_nf,"+
                                   "t_cliente_fornecedor,t_cod_oper,t_transp "+
                                   "where t_cliente_fornecedor.v_cgc_cpf_fatur//ela copia até aqui =t_nf.v_codclifornec "+
                                   " and t_nf.v_cod_oper=t_cod_oper.v_cod_oper and t_nf.v_codtransp"+
                                   "=t_transp.v_codtransp and "+
                                   "f_num_nf=157";

Você tem certeza que o problema é no tamanho da String? Tente fazer um programa mais simples apenas para testar isso.
Além disso, preste atenção em todas as aspas. Você não pode fazer quebra de linha dentro do String como no seu primeiro exemplo. Sempre que quiser mudar de linha, feche as aspas e depois concatene o resto.

o tamanho de uma String eh 2 elevado a 31 menos 1, que eh o tamanho de um int

sabem porque?
porque uma string eh uma array de char, uma array em java soh aceita um numero INT de elementos.

acho que estou virando um javanerd

Uxe quer dizer que elas não são ilimitadas??? Boiei nessa!!!
Bem, quer dizer, 2 elevado a 31 vai estourar qualquer memória existente no mercado mesmo…
Ahhh é que nem delphi. Ele suporta Strings de até 2 giga. 2 ^ 31.
Tá certo os cálculos?

É isso mesmo…

Mas nem de longe a String do nosso colega ai arranha esse limite!! hehe

Abraços!

Carlos H.