我正在为AutoCAD创建一个插件,它使用外部数据库(SQLite)。在很少的情况下,我会得到“表未找到”错误。把我逼疯了。我见过很多论坛的答案都找不到解决的办法。
它在大多数情况下都能工作,只有很少的实例会抛出这个错误。
我该如何解决这个问题。
我使用的是DB的相对路径,它位于Debug/ relative文件夹中。
将数据库附加到应用程序的最佳方法是什么(在我的例子中,它是.dll而不是exe)
谢谢reply...Sorry,我没有收到任何电子邮件通知.
,这是您要求的信息.
我有一个独立的类-它处理连接。下面是我如何连接到DB的方法。
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的位置,而不是插件的位置。
任何其他建议都会很好。谢谢
我发现了问题的原因,当我运行应用程序并正确关闭应用程序时(这意味着在完成所有过程之后)它可以正常工作,我没有收到任何错误消息。
只有在中间关闭应用程序的窗口时,才会得到错误。看来,如果我尝试运行应用程序,为DB打开的连接仍然很忙。
发布于 2013-01-16 03:40:16
获取插件的路径
var asmpath = Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location );发布于 2013-01-16 04:04:53
为什么不选择另一条路呢?
与其尝试查找DLL和关联的SQLite数据库,我建议您将它们安装在特定位置。通过这种方式,您可以轻松地用安装程序将其打包。
您可以使用带有注册表项的.NET模块通过AutoCAD自动加载:loadi.html
这样,您就可以像安装普通程序一样安装AutoCAD插件,并让AutoCAD在启动时为您加载它们。
https://stackoverflow.com/questions/13794783
复制相似问题