外部组件抛出异常
External component throws an exception
我有一个问题。我有 Access 数据库和 WPF 应用程序。该应用程序是 Build in 32-bit,而 Access Database 是 32-bit。每隔一段时间,应用程序在连接到数据库时会向我显示错误。外部组件会抛出异常。而且即使我吃掉错误或尝试再次连接到数据库,它也不起作用。我必须重新启动应用程序,然后它再次运行,直到它在接下来的 15 个左右的数据库连接事务中再次抛出错误。如果你明白我的意思。
如何重新启动该错误,以便我可以再次连接到数据库或避免引发错误。
请帮帮我。
我不知道提供什么样的代码是相关的。
try
{
List<IDModel> output = new List<IDModel>();
using (OleDbConnection connection = new OleDbConnection(Conn))
{
await connection.OpenAsync();
using (OleDbCommand Command = new OleDbCommand("SELECT * FROM DATA WHERE [STATUS] = @status;", connection))
{
Command.Parameters.AddWithValue("@status", _status);
var reader = await Command.ExecuteReaderAsync();
while (reader.Read())
{
output.Add(InsertID
((int)reader["ID"], (string)reader["STANDARD"], (string)reader["NAZIV"], (string)reader["POSLOVNA ENOTA"],
(string)reader["IZVOR NESKLADNOSTI"], (string)reader["ODDELEK"], (string)reader["OPIS"],
(string)reader["SLIKA 1"].ToString(),
(string)reader["SLIKA 2"].ToString(), (string)reader["SLIKA 3"].ToString(), (string)reader["SLIKA 4"].ToString(),
(string)reader["SLIKA 5"].ToString(), (string)reader["EXCEL 1"].ToString(), (string)reader["PDF 1"].ToString(),
(string)reader["SLIKA 6"].ToString(), (string)reader["EXCEL 2"].ToString(), (string)reader["PDF 2"].ToString(),
(string)reader["KOREKCIJA"].ToString(),
(string)reader["SLIKA 7"].ToString(), (string)reader["EXCEL 3"].ToString(), (string)reader["PDF 3"].ToString(),
(string)reader["KOREKTIVNI"].ToString(), (string)reader["VZROK"].ToString(),
(string)reader["OCENA"].ToString(), (string)reader["OPOMBA"].ToString(),
(string)reader["NESKLADNOST ODPRL"].ToString(), (string)reader["KOREKCIJA PODAL"].ToString(), (string)reader["NESKLADNOST ZAPRL"].ToString(),
(string)reader["NESKLADNOST VALIDIRAL"].ToString(), (string)reader["ROK ZA REŠITEV"].ToString(),
(bool)reader["BIG EVENT"],
(string)reader["NESKLADNOST ODPRTA"].ToString(), (string)reader["KOREKCIJA PODANA"].ToString(),
(string)reader["NESKLADNOST ZAPRTA"].ToString(), (string)reader["NESKLADNOST VALIDIRANA"].ToString()
));
}
}
return output;
}
}
catch (Exception)
{
throw;
}
此致!
我认为问题出在访问数据库上。根据我的经验,Access 有时会在没有明显原因的情况下失败。我花了很多时间调查访问崩溃,但没有找到解决方案。有些事情可能会有所帮助:
- 确保您只从单个线程使用数据库。
- 确保正确处理所有与数据库相关的对象。
- 确保数据库不要太大,数据库大小有 2Gb 的限制。 运行 压缩可能会有帮助。
- 添加更好的错误处理、捕获错误并重试操作。如果多次失败,请处理并重新创建数据库连接。
- 将数据库访问转移到另一个进程。这有助于错误处理,允许您在需要时重新启动整个过程。
我的首选解决方案是完全避免使用访问权限。花时间将数据移植到一些真实的数据库。
我有一个问题。我有 Access 数据库和 WPF 应用程序。该应用程序是 Build in 32-bit,而 Access Database 是 32-bit。每隔一段时间,应用程序在连接到数据库时会向我显示错误。外部组件会抛出异常。而且即使我吃掉错误或尝试再次连接到数据库,它也不起作用。我必须重新启动应用程序,然后它再次运行,直到它在接下来的 15 个左右的数据库连接事务中再次抛出错误。如果你明白我的意思。
如何重新启动该错误,以便我可以再次连接到数据库或避免引发错误。
请帮帮我。 我不知道提供什么样的代码是相关的。
try
{
List<IDModel> output = new List<IDModel>();
using (OleDbConnection connection = new OleDbConnection(Conn))
{
await connection.OpenAsync();
using (OleDbCommand Command = new OleDbCommand("SELECT * FROM DATA WHERE [STATUS] = @status;", connection))
{
Command.Parameters.AddWithValue("@status", _status);
var reader = await Command.ExecuteReaderAsync();
while (reader.Read())
{
output.Add(InsertID
((int)reader["ID"], (string)reader["STANDARD"], (string)reader["NAZIV"], (string)reader["POSLOVNA ENOTA"],
(string)reader["IZVOR NESKLADNOSTI"], (string)reader["ODDELEK"], (string)reader["OPIS"],
(string)reader["SLIKA 1"].ToString(),
(string)reader["SLIKA 2"].ToString(), (string)reader["SLIKA 3"].ToString(), (string)reader["SLIKA 4"].ToString(),
(string)reader["SLIKA 5"].ToString(), (string)reader["EXCEL 1"].ToString(), (string)reader["PDF 1"].ToString(),
(string)reader["SLIKA 6"].ToString(), (string)reader["EXCEL 2"].ToString(), (string)reader["PDF 2"].ToString(),
(string)reader["KOREKCIJA"].ToString(),
(string)reader["SLIKA 7"].ToString(), (string)reader["EXCEL 3"].ToString(), (string)reader["PDF 3"].ToString(),
(string)reader["KOREKTIVNI"].ToString(), (string)reader["VZROK"].ToString(),
(string)reader["OCENA"].ToString(), (string)reader["OPOMBA"].ToString(),
(string)reader["NESKLADNOST ODPRL"].ToString(), (string)reader["KOREKCIJA PODAL"].ToString(), (string)reader["NESKLADNOST ZAPRL"].ToString(),
(string)reader["NESKLADNOST VALIDIRAL"].ToString(), (string)reader["ROK ZA REŠITEV"].ToString(),
(bool)reader["BIG EVENT"],
(string)reader["NESKLADNOST ODPRTA"].ToString(), (string)reader["KOREKCIJA PODANA"].ToString(),
(string)reader["NESKLADNOST ZAPRTA"].ToString(), (string)reader["NESKLADNOST VALIDIRANA"].ToString()
));
}
}
return output;
}
}
catch (Exception)
{
throw;
}
此致!
我认为问题出在访问数据库上。根据我的经验,Access 有时会在没有明显原因的情况下失败。我花了很多时间调查访问崩溃,但没有找到解决方案。有些事情可能会有所帮助:
- 确保您只从单个线程使用数据库。
- 确保正确处理所有与数据库相关的对象。
- 确保数据库不要太大,数据库大小有 2Gb 的限制。 运行 压缩可能会有帮助。
- 添加更好的错误处理、捕获错误并重试操作。如果多次失败,请处理并重新创建数据库连接。
- 将数据库访问转移到另一个进程。这有助于错误处理,允许您在需要时重新启动整个过程。
我的首选解决方案是完全避免使用访问权限。花时间将数据移植到一些真实的数据库。