Como utilizar o replace

11 respostas
eve_bsi

Ola pessoal, seguinte…
tenho uma aplicação,onde é feita importação de um arquivo, e nesse arquivo é pego valores numérico - são os valores das depesas, ou seja, valores em formato (por exemplo) 1546,32.
Até aqui ok, porém a hora q pego esse valores, o valor vem com “.” - 1546.32 (pra pegar esses valores da planilha importada estou utilizando a api JExcel). Aí na hora de salvar na base de dados, da erro, por conta do ‘.’, teria q ser ‘,’.
Aí pensei em utilizar o replace, nunca utilizei, mas pelo q pesquisei o replace só se aplica a String, não sei se é correto isso. Bom o q eu pensei em fazer foi converter para String, ai dar o replace, e entao converter para numérico novamente, no caso para double…
Bom sei que isso é uma enorme de uma POG…rsrsrs
Será que isso é a ÚNICA forma de fazer…rsrs
Alguém tem alguma outra idéia??? :idea:

:smiley:

11 Respostas

F

Ué…

Pelo que eu entendi o componente já esta te devolvendo uma string…

Então tu só precisa dar um .replace(’.’, ‘,’)

e-pronto

o.O

mario.fts

não, o número dela vem como double, não como string…

Nesse caso vc pode usar um DecimalFormat pra converter pra um formato de string. mas tipo num da pra vc converter pra um double com virgula.

da uma olhada aqui, tem alguns exemplos: http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html

isso pelo menos tira o passo onde vc converte o double pra string

[]'s

R

converte pra String

string.replaceAll("\.", “,”);

tenta ae :smiley:

eve_bsi

então… vou tentar aqui com esse decimaFormat, se nao der eu coloco aqui…

Bom eu pego assim da planilha, ele vem como numerico, mas nao deve ser o mesmo tipo q ta no banco, no banco ta como decimal[15,2], ta dando erro na hora q gravar…

ó esse é o codigo q eu pego da planilha do excel…

double aluguelEquip = 0; Cell b8 = sheet.getCell(1, 7); if(b8.getType() == CellType.NUMBER){ NumberCell nc = (NumberCell) b8; aluguelEquip = nc.getValue(); }

eve_bsi

mario.fts:
não, o número dela vem como double, não como string…

Nesse caso vc pode usar um DecimalFormat pra converter pra um formato de string. mas tipo num da pra vc converter pra um double com virgula.

da uma olhada aqui, tem alguns exemplos: http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html

isso pelo menos tira o passo onde vc converte o double pra string

[]'s

Tipo ele ta como double, ai eu converto pra String e depois pra decimal??? é isso?

mario.fts

perai, por partes… hehehehe

que banco que é, e qual o erro que ta dando na hora que vc vai gravar? Vc ta usando jdbc?

[]'s

eve_bsi
mario.fts:
perai, por partes.. hehehehe

que banco que é, e qual o erro que ta dando na hora que vc vai gravar? Vc ta usando jdbc?

[]'s
Estou usando o MySQL, da um erro de sintaxe de mysql...
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '32792.33', '2674.39, '270.85', '7227.85', '10125.42', '23.4', '127.95', '1843.36' at line 1
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.Util.getInstance(Util.java:381)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3536)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3468)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957)

Código para salva no BD

public void inserirDespesaRateio(DespesaRateioVO despesaRateioVO){
		StringBuffer query = new StringBuffer();
		
		query.append("Insert into desp_rateio(Advocacia, Agua, Aluguel, AlugEquip, Amostras, Bonificacoes, BrindesConf," +
			" CartoriosJudiciais, Combustivel, Comunicacoes, CondEstacio, Consultoria, Contabilidade, ContribSocial, " +
			"Correios, CPMF, Cursos, DeprecAmort, DescConcedidos, Doacoes, EnEletrica, FeirasExp, Fretes, JurosVar, " +
			"JurosTitulos, JurosTributos, Limpeza, Livros, ManutImoveis, ManutMaquinas, ManutVeiculos, ManutGeral, " +
			"MatSeguranca, MatExpediente, MatHigLimpeza, Multas, MultasEspontaneas, MultasNotificacao, OutrasDespesas, " +
			"PartResultados, PremiosGrat, ProLabore, Publicidade, Publicacoes, Refeicoes, RoupasProf, Seguranca, Seguros, " +
			"ServPrestadoPF, ServPrestadoPJ, TarifasBancarias, Telefone, Traducoes, DataRef) values('" +
				despesaRateioVO.getAdvocacia() + "', '" + despesaRateioVO.getAgua() +"', '" + despesaRateioVO.getAluguel() + 
				despesaRateioVO.getAlugEquip() + "', '" + despesaRateioVO.getAmostras() + "', '" + despesaRateioVO.getBonificacoes() +
				"', '" + despesaRateioVO.getBonificacoes() + "', '" + despesaRateioVO.getBrindeConf() + "', '" + despesaRateioVO.getCartorioJudic() +
				"', '" + despesaRateioVO.getCombustivel() + "', '" + despesaRateioVO.getComunicacoes() + "', '" + despesaRateioVO.getCondEstacio() +
				"', '" + despesaRateioVO.getConsultoria() + "', '" + despesaRateioVO.getContabilidade() + ", '" + despesaRateioVO.getContribSocial() +
				"', '" + despesaRateioVO.getCorreio() + "', '" + despesaRateioVO.getCpmf() + "', '" + despesaRateioVO.getCursos() + 
				"', '" + despesaRateioVO.getDeprecAmort() + "', '" + despesaRateioVO.getDescConcedido() + "', '" + despesaRateioVO.getDoacoes() + 
				"', '" + despesaRateioVO.getEnerEletrica() + "', '" + despesaRateioVO.getFeirasExp() +	"', '" + despesaRateioVO.getFretes() + 
				"', '" + despesaRateioVO.getJurosVar() + "', '" + despesaRateioVO.getJurosTitulos() + "', '" + despesaRateioVO.getJurosTributos() + 
				"', '" + despesaRateioVO.getLimpeza() + "', '" + despesaRateioVO.getLivros() + "', '" + despesaRateioVO.getManutImoveis() + 
				"', '" + despesaRateioVO.getManutMaquinas() + "', '" +	despesaRateioVO.getManutVeiculos() + "', '" + despesaRateioVO.getManutGeral() +
				"', '" + despesaRateioVO.getSeguranca() + "', '" + despesaRateioVO.getMatExpediente() + "', '" + despesaRateioVO.getMatHigLimpeza() + 
				"', '" + despesaRateioVO.getMultas() + "', '" + despesaRateioVO.getMultasEspontaneas() + "', '" + despesaRateioVO.getMultasNotificacao() +
				"', '" + despesaRateioVO.getOutrasDespesas() + "', '" + despesaRateioVO.getPartResultados() + "', '" +	despesaRateioVO.getPremiosGrat() + 
				"', '" + despesaRateioVO.getProLabore() + "', '" + despesaRateioVO.getPublicidade() + "', '" + despesaRateioVO.getPublicacoes() + 
				"', '" + despesaRateioVO.getRefeicoes() + "', '" + despesaRateioVO.getRoupasProf() + "', '" + despesaRateioVO.getSeguranca() + 
				"', '" + despesaRateioVO.getSeguros() + "', '" + despesaRateioVO.getServPrestadoPF() + "', '" + despesaRateioVO.getServPrestadoPJ() + 
				"', '" + despesaRateioVO.getTarifasBancarias() + "', '" + despesaRateioVO.getTelefone() + "', '" + despesaRateioVO.getTraducoes() + 
				"', '" + despesaRateioVO.getDataRefe() + "');");
		try{
			this.stmt = this.getConnection().createStatement();
			this.stmt.execute(query.toString());
		}catch (Exception e){
			e.printStackTrace();
		}finally{
			closeConnection();
		}	
	}

no banco ta como decimal...
sera isso?o q posso fazer?

eve_bsi

deu outro erro agora… era sintaxe, ai arrumei, tava fantando umas aspas…

java.sql.SQLException: Column count doesn't match value count at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3536) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3468) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1957) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2642) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2571) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:769) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:612)
alguem ja viu esse erro?

mario.fts

2 dicas

1 - Use prepared statment no lugar de statment. o código fica mais legivel, e vc não tem esse tipo de problemas com aspas. exemplo

String sql = "insert into table123 (id, nome, endereco) values (?,?,?)";
PreparedStatment st = conn.prepareStatement(sql);
st.setLong(1, obj.getId());
st.setString(2, obj.getNome());
st.setString(3, obj.getEndereco());
ResultSet rs = st.executeQuery();

isso resolve um dos seus problemas.

2 - Não adianta usar um StringBuffer e ficar concatenando String.

Isso

StringBuffer sb = new StringBuffer();
sb.apend(obj.getValor1() + obj.getValor2() + obj.getValor3());

é diferente de

StringBuffer sb = new StringBuffer();
sb.apend(obj.getValor1());
sb.apend(obj.getValor2());
sb.apend(obj.getValor3());

no primeiro caso,a jvmvai somar todas as strings, e só no fim ele vai adicionar no stringbuffer. a cada soma (no exemplo são 3 partes) vai ser criada uma string, que vai ocupar espaço na memória, sendo que vc vai usar só a ultima string criada. no segundo caso, o stringbuffer não vai criar uma string toda vez q vc concatenar, só no final e vc vai economizar memória.

mario.fts

dei uma olhada no oraculo, e ele me disse que vc pode ter esquecido de passar o valor pra alguma coluna do insert. faça a correção nº1 que eu te passei que deve reesovler esse problema também.

[]'s

eve_bsi

mario.fts:
dei uma olhada no oraculo, e ele me disse que vc pode ter esquecido de passar o valor pra alguma coluna do insert. faça a correção nº1 que eu te passei que deve reesovler esse problema também.

[]'s

Uhm… era isso mesmo… tava faltando um campo da minha tabela…rs
Eu esqueci desse campo, pq ele pode ser nulo, ai acabei esquecendo dele… Mas blza…
Agora estou com problema no formato da data…
Bom mas acho q isso eu devo abrir outro tópico ou procurar em algum outro tópico…
Pois não cabe a esse tópico…
Mas acho q era isso… pelo menos a resposta de como utilizar o replace foi respondida…rsrs

Tks a todos… :smiley:

Criado 30 de outubro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 11
Participantes 4