Perca de dados ao inserir no banco?

6 respostas
F

Galera eu insiro os dados no sql server e alguns dados de alguns campos se perdem, mas eu debuguei e os dados estao la nos beans!!!!! e o estranho e porque ele perde so alguns numeros de um campo exemplo cnpj ele perde os 3 primeiros numeros111

public void inserirDados(Collection list) {

		Sindical_Bean beanInterno = new Sindical_Bean();
		Iterator it = list.iterator();
		
		try {
			stmt = conexaoSQLServer.createStatement();
			int pos = 30000;
			while (it.hasNext()) {
				beanInterno = (Sindical_Bean) it.next();
						stmt.execute("INSERT INTO tblBaixaSindical (idPagamento,cnpj"
								+ ",valorJuro,valorMulta,valorDaGuia,exercicio,tipo,meio"
								+ ",banco,entidadeSindical,usuario,capitalSocial,dataVencimento"
								+ ",dataPagamento,dataBaixa) VALUES("
								+ pos
								+ ","
								+ beanInterno.getCnpj()
								+ ",0,0,"
								+ beanInterno.getValorContribuicao()
								+ ","
								+ beanInterno.getExercicio()
								+ ",'guia','normal','bb','Fecomercio',63,0,"
								+ beanInterno.getDataVencimento()
								+ ","
								+ beanInterno.getDataPagamento()
								+ ","
								+ beanInterno.getDataBaixa() + ");");
				pos++;
			}
			System.out.println(beanInterno.getCnpj());
			System.out.println(beanInterno.getDataPagamento());
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
	}

Se alguem tiver ideia!!!

Falow!!!!

6 Respostas

J

1º não use o metodo execute() para inserir algo no banco, use executeUpdate()

2º não use uma expressão SQL feia desse jeito, use PreparedStatement e passe os valores como parametros

3º se está perdendo alguma coisa, provavelmente o campo no banco é pequeno demais para a quantidade de dados que você está tentando inserir…

F
Valeu era isso mesmo eu usei o preparedstatement e funcionou legal so tem um problema em vez de ele inserir 8 registros ele inseri so 7 porque???
public void inserirDados(Collection list) {

		Sindical_Bean beanInterno = new Sindical_Bean();
		Iterator it = list.iterator();
		
		try {
			PreparedStatement stmt = conexaoSQLServer.prepareStatement("INSERT INTO tblBaixaSindical (idPagamento,cnpj"
					+ ",valorJuro,valorMulta,valorDaGuia,exercicio,tipo,meio"
					+ ",banco,entidadeSindical,usuario,capitalSocial,dataVencimento"
					+ ",dataPagamento,dataBaixa) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);");
			int pos = 30000;
			while (it.hasNext()) {
				beanInterno = (Sindical_Bean) it.next();
								
				stmt.setInt(1,pos);
				stmt.setString(2,beanInterno.getCnpj());
				stmt.setString(3,"0");
				stmt.setString(4,"0");
				stmt.setString(5,beanInterno.getValorContribuicao());
				stmt.setString(6,beanInterno.getExercicio());
				stmt.setString(7,"guia");
			    stmt.setString(8,"boleto");
			    stmt.setString(9,"bb");		
			    stmt.setString(10,"Fecomercio");
			    stmt.setString(11,"63");		
			    stmt.setString(12,"0");
			    stmt.setString(13,"31/02/2006");
			    stmt.setString(14,beanInterno.getDataPagamento());
			    stmt.setString(15,"18/05/2006");
			    stmt.execute();
			    pos++;
			}
			} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
	}

Valeu pela ajuda!!!1

H

É só um palpite… confere o tipo de dado que voce esta tentando inserir no banco. caso no banco o cnpj seja do tipo number e vc tentar inserir algo como ‘011111111’ vai dar problema…

Boa sorte !!!

J

Não use execute(), use executeUpdate();

M

Uma pergunta só, você já parou a execução, ou já mostrou esta lista neste método para ver se tem realmente 8 registros? Não é por nada não, mas o problema deve estar antes disso aí, o problema deve estar onde você está pengando os dados do usuário.

:joia:

F

Fala Foxan,

Beleza cara?

Se eu fosse fazer isso, nao faria com uma inserção por iteração,

colocaria no lugar do rs.execute, um addBatch();

e na saida do laço um ps.executeBatch();

[]s cara

Renato

Criado 18 de maio de 2006
Ultima resposta 13 de jun. de 2006
Respostas 6
Participantes 5