我正在尝试从C#批量插入Oracle。我有数据在对象的数组列表中。目前插入为:
using (OracleCommand command = new OracleCommand(commandString, oc.connection))//, _transaction))
{
string[] temp = netstat.getStrings();
//replace with nulls
command.Parameters.Add("node", OracleType.VarChar, 255).Value = temp[0];
command.Parameters.Add("protocol", OracleType.VarChar, 10).Value = temp[1];
command.Parameters.Add("localip", OracleType.VarChar, 25).Value = temp[2];
command.Parameters.Add("localport", OracleType.VarChar, 10).Value = temp[3];
command.Parameters.Add("foreignip", OracleType.VarChar, 25).Value = temp[4];
command.Parameters.Add("foreignport", OracleType.VarChar, 10).Value = temp[5];
if (temp[6] == null)
{
command.Parameters.Add("state", OracleType.VarChar, 25).Value = DBNull.Value;
}
else
{
command.Parameters.Add("state", OracleType.VarChar, 25).Value = temp[6];
}
command.Parameters.Add("pid", OracleType.VarChar, 10).Value = temp[7];
try
{
command.ExecuteNonQuery();
}
catch (OracleException e)
{
string errorMessage = "Code: " + e.Code + "\n" +
"Message: " + e.Message;
//System.Diagnostics.EventLog log = new System.Diagnostics.EventLog();
//log.Source = "My Application";
//log.WriteEntry(errorMessage);
Console.WriteLine("An exception occurred. Please contact your system administrator. " + errorMessage);
}
}
每个对象大约需要10秒钟!有更快的方法吗?我正在使用Microsoft System.Data.OracleClient。我应该考虑转换吗?我的目标是速度和应用程序的可移植性......我目前正在分发exe以及oracle调用接口DLL,因此它将在没有安装oracle的情况下运行。
答案 0 :(得分:1)
MS客户端不是很好。你最好用ODP.net