我正在为使用外部数据库(SQLite)的 AutoCAD 创建一个插件。在极少数情况下,我会收到“找不到表”错误。这让我疯狂。我已经看到很多论坛的答案无法找到解决方案。
它在大多数情况下都有效,只有少数情况下会引发此错误。
我该如何解决这个问题。
我正在使用数据库的相对路径,它位于 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 的位置(因为 DB 和 .dll 位于同一文件夹中)。
- 如何在连接字符串中同时使用绝对路径和相对路径(因此,如果相对路径失败,代码可以尝试使用绝对路径定位数据库)。
任何其他建议都会很棒。谢谢
我找到了问题的原因,当我运行应用程序并正确关闭应用程序(意味着完成所有过程后)它工作正常我没有收到任何错误消息......