我构建了一个解析器,它获取存储在 xml 文件中的数据并使用 linq-to-sql 将其发送到 Microsoft Access 数据库。我有 sql insert 命令并且它们可以工作......直到它们没有。
奇怪的是,我运行了每个 SQL 命令(我将它们保存在一个列表中并一次执行每个命令)并且前 40 个左右运行良好,直到它们开始遇到“未指定的错误”。问题是,如果我吞下异常,而是让异常捕获器继续重试,几秒钟后,它们又开始工作了。这意味着它不是 SQL 查询本身的错误(或至少它是如何编写的)。
这种模式重复(有数千个插入)多次。如果我进行正常的异常处理,程序将在错误发生时跳过一些记录,并在导致错误暂时消失的任何原因时继续插入。如果我让它运行它,它会插入一些记录,跳过一些,插入,跳过,重复并最终插入少于 2/3 的记录。
有什么理由让我的计算机只运行 40 个左右的插入,然后拒绝在随机但短的时间间隔内运行更多?
我不知道是什么原因造成的。
该应用程序是本机运行的;它不使用任何服务器/Web 通信,我在查找“未指定错误”时发现的所有内容都指向 ADO.NET 应用程序中的事件。
这是发生错误的代码:
public static string insertQuery(string sql)
{
string connetionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Owner\Desktop\Arbeit\TrademarkParserproject1\TrademarkParserproject\bin\x86\Debug\Database.accdb";
OleDbConnection connection;
OleDbDataAdapter oledbAdapter = new OleDbDataAdapter();
connection = new OleDbConnection(connetionString);
string success = "false";
try
{
connection.Open();
oledbAdapter.InsertCommand = new OleDbCommand(sql, connection);
oledbAdapter.InsertCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
success = ex.ToString();
return success;
}
success = "true";
return success;
}
请注意,我让应用程序在 X86 模式下运行以避免 ACE.OLEDB.12.0 适配器出现错误。