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()方法清空连接池后,问题依然存在。
请问有何其他解决办法?
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()方法清空连接池后,问题依然存在。
请问有何其他解决办法?
...全文
相关推荐
JDBC连接Oracle数据库常见问题及解决方法
"JDBC连接Oracle数据库常见问题及解决方法"本文将对 JDBC 连接 Oracle 数据库常见问题进行总结和解决方法的介绍。以下是针对不同问题的解决方案:1.
Oracle数据库连接报错问题
ORA-27101"错误表示共享内存区域未找到,这可能是因为数据库实例和客户端之间无法建立有效的连接。
win864位使用plsqldeveloper连接oracle数据库的问题.docx
工具连接本地Oracle数据库时,可能会遇到各种无法预期的问题,例如连接失败、错误提示框为空等现象。
oracle连接解决方案
#### 三、总结本解决方案提供了从服务启动到命令行连接,再到使用Database Control工具的一系列步骤,旨在帮助用户快速有效地解决Oracle连接问题。
Oracle Database Lite 技术白皮书.pdf
Oracle Database Lite(简称DB Lite)应运而生,旨在解决这一挑战,它不仅是一个小体积的客户端数据库,更是完整的移动应用开发、部署和管理基础设施,是开发者构建安全、个性化移动应用的理想选择


