微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

外部组件引发异常

如何解决外部组件引发异常

我有一个问题。我有Access数据库和WPF应用程序。该应用程序为32位版本,Access数据库为32位。并且每隔一段时间,应用程序就会在连接到数据库时向我显示错误。外部组件引发异常。而且,如果我吃了这个错误或尝试再次连接到数据库,它将不起作用。我必须重新启动该应用程序,然后它才能再次工作,直到它在接下来的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有时会失败,没有明显的原因。我花了很多时间调查访问崩溃,但没有找到解决方案。有些事情可能会有所帮助:

  1. 确保仅从单个线程使用数据库。
  2. 确保正确处理所有与数据库相关的对象。
  3. 确保数据库不大,数据库大小限制为2Gb。运行压缩可能会有所帮助。
  4. 添加更好的错误处理,捕获错误并重试该操作。如果发生重复的失败,请处置并重新创建数据库连接。
  5. 将数据库访问权移至另一个进程。这有助于错误处理,允许您在需要时重新启动整个过程。

我的首选解决方案是完全避免使用访问权限。花时间将数据移植到一些真实的数据库中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。