Oracle数据库连接问题,高手请进。
先贴代码。
Command = Connection.CreateCommand();
Command.CommandText = string.Format("select {0}.nextval from dual", country.SequenceName);
int id = int.Parse(Command.ExecuteScalar().ToString());
if (cellarray.ContainsKey("ID"))
cellarray["ID"] = id;
else
cellarray.Add("ID", id);
StringBuilder cell_sb = new StringBuilder();
cell_sb.AppendFormat("INSERT INTO {0}(", country.oracleTableName);
StringBuilder values_sb = new StringBuilder("VALUES(");
int i = 0;
foreach (KeyValuePair<string, object> cell in cellarray)
{
if (i != 0)
{
cell_sb.Append(',');
values_sb.Append(',');
}
cell_sb.AppendFormat("\"{0}\"", cell.Key);
string paramName = string.Format(":{0}", cell.Key);
values_sb.Append(paramName);
Command.Parameters.Add(new Oracle.DataAccess.Client.OracleParameter(paramName, cell.Value));
i++;
}
Command.CommandText = string.Format("{0}) {1})", cell_sb, values_sb);
Command.ExecuteNonQuery();
方法用来拼接一个INSERT语句,最后执行。
需求是讲Excel中的数据,导入到Oracle数据库中,当连续执行40+万次,大概运行2小时左右,执行到红色代码位置,程序就停住不动。不会报异常,这是关掉本地连接后重新打开,红色语句报错。否则会卡在这里不运行。
尝试过的解决办法但都失败:
连续执行10万次后重新new OracleConnection,任然会遇到同样的问题。google了几篇文章,据说是由于连接池中的连接过期导致,但我是持续的执行INSERT操作,怎么会过期呢。采用Oracle.DataAccess.Client.OracleConnection.ClearAllPools()方法清空连接池后,问题依然存在。
请问有何其他解决办法?