internal void ImportCommodities(List<EDCommodities> Commodities)
{
String sqlString;
Int32 Counter = 0;
DBConnector lDBCon = new DBConnector(Program.DBCon.ConfigData, true);
try
{
// gettin' some freaky performance
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=2");
lDBCon.TransBegin();
sendProgressEvent(new ProgressEventArgs() { Info="import commodities", CurrentValue=0, TotalValue=Commodities.Count });
// insert or update all commodities
foreach (EDCommodities Commodity in Commodities)
{
sqlString = "insert into tbCategory(id, category, loccategory) values (" +
Commodity.Category.Id.ToString() + "," +
SQL.DBConnector.SQLAString(Commodity.Category.Name.ToString()) + "," +
SQL.DBConnector.SQLAString(Commodity.Category.Name.ToString()) +
") ON DUPLICATE KEY UPDATE " +
"category = " + SQL.DBConnector.SQLAString(Commodity.Category.Name.ToString()) + "," +
"loccategory = " + SQL.DBConnector.SQLAString(Commodity.Category.Name.ToString());
lDBCon.Execute(sqlString);
sqlString = "insert into tbCommodity(id, commodity, loccommodity, category_id, average_price) values (" +
Commodity.Id.ToString() + "," +
SQL.DBConnector.SQLAString(Commodity.Name.ToString()) + "," +
SQL.DBConnector.SQLAString(Commodity.Name.ToString()) + "," +
Commodity.CategoryId.ToString() + "," +
DBConvert.ToString(Commodity.AveragePrice) +
") ON DUPLICATE KEY UPDATE " +
"commodity = " + SQL.DBConnector.SQLAString(Commodity.Name.ToString()) + "," +
"loccommodity = " + SQL.DBConnector.SQLAString(Commodity.Name.ToString()) + "," +
"category_id = " + Commodity.CategoryId.ToString() + "," +
"average_price = " + DBConvert.ToString(Commodity.AveragePrice);
lDBCon.Execute(sqlString);
Counter++;
if(sendProgressEvent(new ProgressEventArgs() { Info="import commodities", CurrentValue=Counter, TotalValue=Commodities.Count }))
break;
}
lDBCon.TransCommit();
// reset freaky performance
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=1");
lDBCon.Dispose();
}
catch (Exception ex)
{
if(lDBCon.TransActive())
lDBCon.TransRollback();
try
{
// reset freaky performance
lDBCon.Execute("set global innodb_flush_log_at_trx_commit=1");
lDBCon.Dispose();
}
catch (Exception) { }
throw new Exception("Error while importing system data", ex);
}
}