首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# AutoCAD插件SQLite -错误表很少被发现

C# AutoCAD插件SQLite -错误表很少被发现
EN

Stack Overflow用户
提问于 2012-12-10 03:57:30
回答 2查看 672关注 0票数 1

我正在为AutoCAD创建一个插件,它使用外部数据库(SQLite)。在很少的情况下,我会得到“表未找到”错误。把我逼疯了。我见过很多论坛的答案都找不到解决的办法。

它在大多数情况下都能工作,只有很少的实例会抛出这个错误。

我该如何解决这个问题。

我使用的是DB的相对路径,它位于Debug/ relative文件夹中。

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

谢谢reply...Sorry,我没有收到任何电子邮件通知.

,这是您要求的信息.

我有一个独立的类-它处理连接。下面是我如何连接到DB的方法。

代码语言:javascript
复制
    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文件夹中,以便在启动时加载。这个应用程序的所有功能都很好,除了很少我没有找到表之外,error..looks可能是相对路径,在应用程序启动时不能快速解决。

如果我尝试使用“Application.ExecutablePath”,我很难找到绝对路径;而我找到online..all的很少东西是Acad.exe的位置,而不是插件的位置。

  1. 如何获得插件位置的绝对路径以获得DB的位置(因为DB和.dll位于同一个文件夹)。
  2. 如何使用连接字符串中的绝对路径和相对路径(因此,如果相对路径失败,代码可以尝试使用绝对路径定位db )。

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

我发现了问题的原因,当我运行应用程序并正确关闭应用程序时(这意味着在完成所有过程之后)它可以正常工作,我没有收到任何错误消息。

只有在中间关闭应用程序的窗口时,才会得到错误。看来,如果我尝试运行应用程序,为DB打开的连接仍然很忙。

EN

回答 2

Stack Overflow用户

发布于 2013-01-16 03:40:16

获取插件的路径

代码语言:javascript
复制
var asmpath = Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location );
票数 1
EN

Stack Overflow用户

发布于 2013-01-16 04:04:53

为什么不选择另一条路呢?

与其尝试查找DLL和关联的SQLite数据库,我建议您将它们安装在特定位置。通过这种方式,您可以轻松地用安装程序将其打包。

您可以使用带有注册表项的.NET模块通过AutoCAD自动加载:loadi.html

这样,您就可以像安装普通程序一样安装AutoCAD插件,并让AutoCAD在启动时为您加载它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13794783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档