C#和SQLite:;没有此类表格错误“;当使用相对路径时?
我在连接sqlite数据库时遇到问题。该文件位于应用程序的文件夹中。这是连接字符串C#和SQLite:;没有此类表格错误“;当使用相对路径时?,c#,sqlite,system.data.sqlite,C#,Sqlite,System.data.sqlite,我在连接sqlite数据库时遇到问题。该文件位于应用程序的文件夹中。这是连接字符串 string path = "Data Source=MY.db"; 如果我使用绝对路径,我可以让它工作,但是如果我尝试使用相对路径,它会给我一个“TableNotFound”错误。有什么想法吗?您正在打开一个不同的——也许是一个新的——数据库,但它没有上述表。(是的,SQLite将愉快地使用默认连接设置创建一个新数据库。) 确保打开了正确的数据库。记住,相对路径是相对于的,这可能不是预期的 (工作目录受加载进
string path = "Data Source=MY.db";
如果我使用绝对路径,我可以让它工作,但是如果我尝试使用相对路径,它会给我一个“TableNotFound”错误。有什么想法吗?您正在打开一个不同的——也许是一个新的——数据库,但它没有上述表。(是的,SQLite将愉快地使用默认连接设置创建一个新数据库。) 确保打开了正确的数据库。记住,相对路径是相对于的,这可能不是预期的 (工作目录受加载进程的位置和方式的影响。例如,“调试”会话的工作目录可以在项目设置/Debug/Start选项下设置。) 快乐编码 另见:
- (显示如何将当前工作目录设置为包含正在执行的程序集的目录。)
重要!我正在使用SQLITE的GUI管理器(SQLITE的DB浏览器)及其所有功能。我的windows应用程序(C#)和web应用程序(ASP.net)都遇到了相同的问题。我通常使用SQLite,因为我发现它更容易,尤其是在处理连接字符串时。但对我来说,主要的障碍是在代码中放置一个相对路径,这样我就可以发布它,而不用担心找不到数据库。我已经尝试了很多方法(使用“|数据目录|”、“~/”、“/”、…),但在找到这些解决方案之前,这些方法都不起作用。代码似乎对我有用,但不知道我是否正确使用了它们 Web应用程序:
SQLiteConnection sql_con = new SQLiteConnection("Data Source =" + Server.MapPath("~/") + "mydb.db; Version = 3; New = false;);
Windows应用程序:
SQLiteConnection sql_con = new SQLiteConnection("Data Source =" + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "mydb.db; Version = 3; New = false; Read Only = true");
只需将.database文件替换为project文件夹中的\bin\Debug,因为在您的情况下,编译器创建的DB文件具有相同的名称,但其0字节完全为空change===>configuration manager>Active Solotion platform>“Any cpu”这确实是问题所在。在备份和还原我的应用程序中的sqlite文件时,“我”始终使用相同的工作目录。但是,当将文件移动/复制到新的工作目录时,Sqlite会使用该文件名创建一个空db,这会使问题变得棘手。