MySql

2 respostas
A

Bom dia.

Tenho um aplicativo que inclui/atualiza produtos num banco, o processo é o seguinte:

Ele verifica se o produto já existe, se existir, atualiza a quantidade, caso contrário ele insere.
O problema é que ela fica muito lenta…
Segue abaixo, o código:

<blockquote>

private static void setBdCont(Statement stC, String endereco, String ean, Long contado, String lote, String venc){							

if(i!=11 && i!=12 && i!=13){

String indice =  endereco+ean+lote+venc;

try{				

ResultSet setC = stC.executeQuery(SELECT ID, InventarioEIndice, InventarioECont+i+" FROM  InventarioEImport  WHERE InventarioCod = “+NewInventario.getNumInvent()+” AND InventarioEIndice = ‘"+indice+"’ “);

if(setC.next()==false){

stC.executeUpdate(“INSERT INTO InventarioEImport  (”+

“InventarioEChavePrim, InventarioEIndice, InventarioCod, “+

“ClienteCod, InventarioEEndereco, InventarioEEAN, InventarioECont”+i+”,”+

" InventarioELote, InventarioEData”+i+") VALUES ("+chavePrim+"’,’"+

indice+"’,’"+NewInventario.getNumInvent()+"’,’"+NewInventario.getNumCli()+"’,’"+

endereco+"’,’"+ean+"’,’"+contado+"’,’"+lote+"’,’"+venc+"’)");

}

else{	

stC.executeUpdate(UPDATE InventarioEImport  SET InventarioECont+i+" ="+((InventarioECont+i+"+")+contado)+", InventarioEData"+i+" = ‘"+venc+"’ WHERE ID = "+setC.getInt(ID));				

}
}		
		catch(SQLException sql){ExceptionMsg.showSQLException(sql);}
		catch(StringIndexOutOfBoundsException sioobe){ExceptionMsg.showStringIndexOutOfBoundsException(sioobe);}
		catch(NullPointerException npe){ExceptionMsg.showNullPointerException(npe);}					
	
	}
	else{
		setBdDiverg();		
	}		
}

[color=green][/color]

2 Respostas

ASOBrasil

AndersonCpp,

Esse código está meio zuado. Acho legal vc dar uma lida em PreparedStatement para ver como funciona. E talvés o problema de lentidão também possa ser de índices.

Exemplos com PreparedStatement:
http://www.java2s.com/Code/Java/Database-SQL-JDBC/PreparedStatement.htm

Exemplos e mais exemplos:
http://www.java2s.com/Code/Java/CatalogJava.htm

ASOBrasil

A

ASOBrasil,

Utilizei o PreparedStatement, e construí uma sintaxe melhor com o 'ON DUPLICATE KEY UPDATE '…ficou 120% mais rápido…
O código realmente estava meio complexo, afinal não se aprende java em dois meses… :wink:

Valeu!

Criado 26 de setembro de 2006
Ultima resposta 28 de set. de 2006
Respostas 2
Participantes 2