【问题标题】:SQL logic error or missing database no such tableSQL 逻辑错误或缺少数据库没有这样的表
【发布时间】:2015-03-25 08:07:12
【问题描述】:

我正在尝试从本地 sqlite 数据库中的表 Condition 中读取所有数据。但是我收到了这个错误:

SQL 逻辑错误或缺少数据库没有这样的表

数据库与调用它的文件位于同一目录中。

这是我的代码:

SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=myDatabase.sqlite;Version=3;");
m_dbConnection.Open();

try
{
    string sql = "select * from Condition";
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);

    SQLiteDataReader reader = command.ExecuteReader();

    while (reader.Read())
        Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["id"]);

    Console.ReadLine();
    return null;
}
catch (Exception exc)
{
    return null;
}
finally
{
    m_dbConnection.Close();
}

【问题讨论】:

  • 这是您用于数据库文件的确切路径吗?
  • 我建议你为你的数据源尝试一个完全限定的路径(比如'C:/whatever/myDatabase.sqlite'来检查你的代码是否真的找到了数据库文件。你的声明“与file 调用它”对我来说听起来很可疑 - 你是如何运行你的代码的?

标签: c# sqlite


【解决方案1】:

我已通过使用绝对路径而不是相对路径来解决此问题。 感谢 Eternal21 https://stackoverflow.com/a/20083762/3483812

【讨论】:

  • 我要在上面的评论中说,当你运行程序时,目录变成了 project/bin/debug,我猜你的目录在解决方案文件的目录中?
【解决方案2】:

数据库应该位于您的bin 文件夹中,或者指定.sqlite 文件的绝对路径。

【讨论】:

    【解决方案3】:

    我在 linux 系统上收到了相同的错误消息。创建数据库时,程序以 root 身份运行:发生错误时,程序以我身份运行。基本上,我没有文件的写权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 2011-01-28
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多