MySql

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:

[quote]
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();		
	}		
}

[/quote][color=green][/color]

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

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!