Oracle数据库连接问题,高手请进。

asd1308855 asd1308855 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先贴代码。
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()方法清空连接池后,问题依然存在。
请问有何其他解决办法?

...全文
评论 21
收藏 已收藏
分享
返回顶部
asd1308855
C# 111,129 成员 642,540 内容