Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和SQLite:;没有此类表格错误“;当使用相对路径时?_C#_Sqlite_System.data.sqlite - Fatal编程技术网

C#和SQLite:;没有此类表格错误“;当使用相对路径时?

C#和SQLite:;没有此类表格错误“;当使用相对路径时?,c#,sqlite,system.data.sqlite,C#,Sqlite,System.data.sqlite,我在连接sqlite数据库时遇到问题。该文件位于应用程序的文件夹中。这是连接字符串 string path = "Data Source=MY.db"; 如果我使用绝对路径,我可以让它工作,但是如果我尝试使用相对路径,它会给我一个“TableNotFound”错误。有什么想法吗?您正在打开一个不同的——也许是一个新的——数据库,但它没有上述表。(是的,SQLite将愉快地使用默认连接设置创建一个新数据库。) 确保打开了正确的数据库。记住,相对路径是相对于的,这可能不是预期的 (工作目录受加载进

我在连接sqlite数据库时遇到问题。该文件位于应用程序的文件夹中。这是连接字符串

string path = "Data Source=MY.db";

如果我使用绝对路径,我可以让它工作,但是如果我尝试使用相对路径,它会给我一个“TableNotFound”错误。有什么想法吗?

您正在打开一个不同的——也许是一个新的——数据库,但它没有上述表。(是的,SQLite将愉快地使用默认连接设置创建一个新数据库。)

确保打开了正确的数据库。记住,相对路径是相对于的,这可能不是预期的

(工作目录受加载进程的位置和方式的影响。例如,“调试”会话的工作目录可以在项目设置/Debug/Start选项下设置。)

快乐编码

另见:

  • (显示如何将当前工作目录设置为包含正在执行的程序集的目录。)

当您在使用SQLite的GUI管理器时没有保存数据库及其表时,就会发生这种情况。 两种解决方案; 1) 在GUI管理器中使用CTR+S保存数据库及其表 2) 或者干脆关闭SQlite的GUI管理器并保存所有内容


重要!我正在使用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,这会使问题变得棘手。