C#AutoCAD插件SQLite-极少数情况下找不到错误表 - c#

我正在为AutoCAD创建一个使用外部数据库(SQLite)的插件。
在极少数情况下,我会收到“找不到表”错误。这让我疯狂。我见过很多论坛都找不到答案。

在大多数情况下,它仅在少数情况下会发生此错误。

我该如何解决这个问题。

我正在使用数据库的相对路径,它位于Debug / release文件夹中。

将数据库附加到应用程序的最佳方法是什么(在我的情况下,它是.dll而不是exe)

谢谢大家的回复...对不起,我没有收到任何电子邮件通知...

这是您要求的信息。

我有一个单独的类-处理连接。
这是我连接数据库的方式。

    public static SQLiteConnection GetConnection()
    {
        string conn_string = string.Format("Data Source=./sdf_db1.s3db");
        SQLiteConnection conn = new SQLiteConnection(conn_string);

        if (!System.IO.File.Exists("./sdf_db1.s3db"))
        {
            Global.variables.mess_out_exception("Missing Database file", "Error");
        }

        return conn;

    }

由于这是AutoCAD Civil3D的插件,因此它位于Appdata \ autodesk文件夹中,可在启动时加载。关于该应用程序的一切工作正常,除非很少出现未找到表的错误。看起来好像是启动应用程序时相对路径无法快速解析。

如果尝试使用“ Application.ExecutablePath;”,则很难找到绝对路径。和其他一些在线上找到的东西..我得到的只是Acad.exe的位置而不是插件的位置。

我如何获取插件位置的绝对路径以获取数据库的位置(因为DB和.dll位于同一文件夹中)。
如何在连接字符串中同时使用绝对路径和相对路径(因此,如果相对路径失败,则代码可以尝试使用绝对路径来定位数据库)。

任何其他建议都很好。谢谢

我找到了问题的原因,
当我运行该应用程序并正确关闭该应用程序(完成所有过程后即表示正常)时,它工作正常,我没有收到任何错误消息...

仅当我关闭两者之间的应用程序窗口时,才会收到错误消息。如果我尝试运行该应用程序,则为数据库打开的连接看起来仍然很忙。

参考方案

使用获取插件的路径

var asmpath = Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location );

在Python中避免相对导入和sys.path - python

当前,我有一个Python项目正在处理这样的目录结构:tests/ corpus/ __init__.py tests.py monkey/ corpus/ corpus.py setup.py 我想将tests.py(在测试/语料库中)导入corpus.py(在猴子/语料库中)。我已经看到许多涉及使用相对导入和sys.path的解决方案,但是我也看到人们直…

SQLite-无法连接数据库 - c#

背景:1.它是一个使用Sqlite databse的C#应用​​程序2.如果不存在db,则此应用程序将创建一个空的db,并将数据从服务器同步到该数据库。问题:1.有时应用程序突然崩溃。似乎有一些未处理的异常。2.即使我重新启动该应用程序,它也立即崩溃。临时解决方案:1.将数据库复制到其他位置,然后删除原始数据库。2.运行该应用程序。没有崩溃。由于不存在任何数…

SQLIte SUM日期时间 - c#

我有一个包含行和时间值的数据库。我想要该时间值的总和(通常,格式为%H:%M)。我这样使用SUM值:SELECT SUM(n_hores) FROM table; 但只有我得到0.0。我该怎么做?谢谢 参考方案 hh:mm格式的时间值为字符串,因此不能对字符串进行有意义的求和。您应该将这些时间值转换为数字(strftime(%s)返回自1970-01-01以…

SQLite PDO查询未返回任何结果 - php

无论查询范围如何,都不会获得结果PHP:5.3SQLite3:3.6PDO:5.3.3我认为这应该是一个非常简单的过程,但是即使环顾四周,我仍然不知道为什么我得到0个结果。这是我的代码:<?php $sqlite = new PDO('sqlite:/example.db'); $result = $sqlite->query…

Sqlite WHERE子句使用参数 - c#

尝试使用where子句运行特定查询,这就是我所拥有的。//ID is user input could be anything SqliteParameter Identifier = new SqliteParameter ("@ID", ID); string SQLText = "SELECT Email FROM Cli…