这个插入数据库的方法:
public void ExecLogger(List<string> datakey, List<string> datavalue,string data)
{
lock (allLock)
{
//分类
string LOG_FUNC_NAME = datavalue[datakey.FindIndex(s => s.Equals("LOG_FUNC_NAME"))].ToString();
LOG_FUNC_NAME = LOG_FUNC_NAME.StartsWith("<") ? LOG_FUNC_NAME.TrimStart('<').Split('>')[0] : LOG_FUNC_NAME;
string LOG_ID = datavalue[datakey.FindIndex(s => s.Equals("LOG_ID"))].ToString();
string LOG_TYPE = datavalue[datakey.FindIndex(s => s.Equals("LOG_TYPE"))].ToString();
string execlogger = string.Empty;
try
{
this.CreateTable(LOG_FUNC_NAME);
if (LOG_TYPE == "CREATE") //create 的数据
{
if (CheckIsOver(datakey.Count, 13)) return;
if (CheckRow(LOG_FUNC_NAME, LOG_ID))
{
return;
}
Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
string key = string.Empty;
string value = string.Empty;
lock (objbuildsql1)
{
for (int i = 0; i < datakey.Count(); i++)
{
if (datakey[i] == "LOG_TYPE" || datakey[i] == "_TYPE" || datakey[i] == "PE")
{
continue;
}
else
{
key += string.Format("{0}", datakey[i].ToString());
value += string.Format("'{0}'", datavalue[i].ToString().Replace(@"\", @"\\").Replace("\'", "\""));
if (i != datakey.Count() - 1 && datakey[i + 1] != "LOG_TYPE")
{
key += ",";
value += ",";
}
}
} execlogger = string.Format("insert into {0} ({1}) values ({2});", LOG_FUNC_NAME, key, value);
}
}
else if (LOG_TYPE == "UPDATE") //updata 的数据
{
if (CheckIsOver(datakey.Count, 12)) return;
Thread.Sleep(200);
if (!CheckRow(LOG_FUNC_NAME, LOG_ID))
{
lock (objresend)
{
new LogSQS().ReSend(datakey, datavalue);
}
return;
}
else
{
if (CheckUpdateOutputRow(LOG_FUNC_NAME, LOG_ID))
{
return;
}
else
{
lock (objbuildsql2)
{
execlogger = string.Format("update {0} set ", LOG_FUNC_NAME);
for (int i = 0; i < datakey.Count(); i++)
{
if (datakey[i] == "LOG_TYPE" || datakey[i] == "_TYPE" || datakey[i] == "PE" || datakey[i] == "LOG_ID")
{
continue;
}
execlogger += string.Format("{0}='{1}'", datakey[i].ToString(), datavalue[i].ToString().Replace(@"\", @"\\").Replace("\'", "\""));
if (i != datakey.Count() - 1 && datakey[i + 1] != "LOG_TYPE")
{
execlogger += ",";
}
} execlogger += string.Format(" where {0}='{1}';", "LOG_ID", LOG_ID);
}
}
}
}
else
{
return;
}
this.InsertOrUpdate(execlogger);
}
catch (Exception ex)
{
try
{
lock (objwritelog)
{
LogWrapper logWrapper = new LogWrapper(); logWrapper.BuildLogFile("MYSQL.Exec", ex.ToString(), execlogger, data, "", "", "", "", "", "", "", "", "", "", "");
}
}
catch
{
throw;
}
finally
{
lock (objresend)
{
new LogSQS().ReSend(datakey, datavalue);
}
}
}
}
}
public void ExecLogger(List<string> datakey, List<string> datavalue,string data)
{
lock (allLock)
{
//分类
string LOG_FUNC_NAME = datavalue[datakey.FindIndex(s => s.Equals("LOG_FUNC_NAME"))].ToString();
LOG_FUNC_NAME = LOG_FUNC_NAME.StartsWith("<") ? LOG_FUNC_NAME.TrimStart('<').Split('>')[0] : LOG_FUNC_NAME;
string LOG_ID = datavalue[datakey.FindIndex(s => s.Equals("LOG_ID"))].ToString();
string LOG_TYPE = datavalue[datakey.FindIndex(s => s.Equals("LOG_TYPE"))].ToString();
string execlogger = string.Empty;
try
{
this.CreateTable(LOG_FUNC_NAME);
if (LOG_TYPE == "CREATE") //create 的数据
{
if (CheckIsOver(datakey.Count, 13)) return;
if (CheckRow(LOG_FUNC_NAME, LOG_ID))
{
return;
}
Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
string key = string.Empty;
string value = string.Empty;
lock (objbuildsql1)
{
for (int i = 0; i < datakey.Count(); i++)
{
if (datakey[i] == "LOG_TYPE" || datakey[i] == "_TYPE" || datakey[i] == "PE")
{
continue;
}
else
{
key += string.Format("{0}", datakey[i].ToString());
value += string.Format("'{0}'", datavalue[i].ToString().Replace(@"\", @"\\").Replace("\'", "\""));
if (i != datakey.Count() - 1 && datakey[i + 1] != "LOG_TYPE")
{
key += ",";
value += ",";
}
}
} execlogger = string.Format("insert into {0} ({1}) values ({2});", LOG_FUNC_NAME, key, value);
}
}
else if (LOG_TYPE == "UPDATE") //updata 的数据
{
if (CheckIsOver(datakey.Count, 12)) return;
Thread.Sleep(200);
if (!CheckRow(LOG_FUNC_NAME, LOG_ID))
{
lock (objresend)
{
new LogSQS().ReSend(datakey, datavalue);
}
return;
}
else
{
if (CheckUpdateOutputRow(LOG_FUNC_NAME, LOG_ID))
{
return;
}
else
{
lock (objbuildsql2)
{
execlogger = string.Format("update {0} set ", LOG_FUNC_NAME);
for (int i = 0; i < datakey.Count(); i++)
{
if (datakey[i] == "LOG_TYPE" || datakey[i] == "_TYPE" || datakey[i] == "PE" || datakey[i] == "LOG_ID")
{
continue;
}
execlogger += string.Format("{0}='{1}'", datakey[i].ToString(), datavalue[i].ToString().Replace(@"\", @"\\").Replace("\'", "\""));
if (i != datakey.Count() - 1 && datakey[i + 1] != "LOG_TYPE")
{
execlogger += ",";
}
} execlogger += string.Format(" where {0}='{1}';", "LOG_ID", LOG_ID);
}
}
}
}
else
{
return;
}
this.InsertOrUpdate(execlogger);
}
catch (Exception ex)
{
try
{
lock (objwritelog)
{
LogWrapper logWrapper = new LogWrapper(); logWrapper.BuildLogFile("MYSQL.Exec", ex.ToString(), execlogger, data, "", "", "", "", "", "", "", "", "", "", "");
}
}
catch
{
throw;
}
finally
{
lock (objresend)
{
new LogSQS().ReSend(datakey, datavalue);
}
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货