SQLite数据源路径奇怪问题



SQLiteConnection字符串的最基本形式是"数据源=…"

我尝试了一个演示,其中我有一个名为MyData的SQLite数据库文件。sdb,这个文件被放置在我的演示项目文件夹树(例如:DemoProjectMyData.sdb)。下面的SQLiteConnection字符串工作:

"data source = MyData.sdb"

我可以选择表OK。我甚至尝试添加MyData。sdb到我的演示项目文件夹中的另一个子文件夹(例如,DemoProjectDataMyData.sdb)和上述连接字符串仍然有效吗?哇,真不敢相信。但现在是最奇怪的事情(与我在演示项目中所经历的相比):

当我尝试另一个项目并将其应用于它时,当我尝试选择一个确实存在于我的SQLite数据库中的表时,它抛出了一个名为"No such table…"的异常。这太奇怪了。我怀疑这是因为数据库文件的路径不正确。我试过使用数据库文件的绝对路径,像这样:

"data source = D:\demo project\MyData.sdb"

然后它工作了,为什么我在演示项目中使用相对路径为我的SQLite数据库文件,但不能应用于我的新项目?

我认为这并不容易,需要你的经验来解释。奇怪的事情可能是在演示项目或在我的新项目中,应该有一个工作异常。

请帮忙!谢谢你!

数据库文件的相对路径可能无法在项目之间工作,因为你的应用程序当前的工作目录可能是什么。你可以在应用程序运行时通过获取Environment.CurrentDirectory来找到你的应用程序的工作目录。

例如,在c#控制台应用程序中,工作目录可以是:

D:ProjectsSQLiteTestbinDebug

如果你的数据源恰好是"data source = MyData.sdb",那么你的控制台应用程序将在D:ProjectsSQLiteTestbinDebugMyData.sdb寻找该数据库。

如果你的下一个应用程序是在IIS中运行的asp.net应用程序,工作目录可以改为:

C:windowssystem32inetsrv

你的应用程序将无法找到你的数据库位置,因为你很可能把数据库放在你的项目文件夹,而不是在C:windowssystem32inetsrvMyData.sdb

这个问题包含了一些一致地解析数据库相对路径的解决方案。

@"Data source=" + System.Windows.Forms.Application.StartupPath + "demo projectMyData.sdb";

this与此代码是应用程序运行的数据库

相关内容

  • 没有找到相关文章

最新更新