无法打开数据库文件错误

时间:2016-12-07 22:52:13

标签: c# database sqlite file

我在使用SQLite和C#时遇到了麻烦。无论我把.db文件放在哪里,当我尝试打开它并创建表时,我都会收到错误"无法打开数据库文件"。

我首先要将它放在%appdata%文件夹中,然后我尝试将其放在其他几个地方,例如userprofilelocal appdata,即使在桌面上也只是为了查看它工作。错误仍然出现,所以我创建.db文件(.db文件是通过代码创建的)没有文件路径,以便将它放在调试文件夹中,并且错误没有显示。

所以,我不认为涉及权限,因为我甚至尝试使用桌面,我还尝试使用数据库浏览器打开创建的.db文件,看看它是否已损坏,并且它有效喜欢魅力。

问题是什么?提前感谢大家的帮助!

修改

以下是Connection String和路径变量:

static string dbConnectionString = "Data Source=" + Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\CSB_Ore\csb_ore.sqlite;";
string dbFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\CSB_Ore\csb_ore.sqlite";
string dbFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\CSB_Ore";

以下是数据库创建的方法:

/// <summary>
    /// Check if the database exists. If not, the database is created and also the CSB_Days table.
    /// </summary>
    public void FirstTimeExecution()
    {
        if(!Directory.Exists(dbFolderPath))
        {
            Directory.CreateDirectory(dbFolderPath);
            File.Create(dbFilePath);

            string tableCreationOutput = CreateTables();

            if (tableCreationOutput == null)
            {
                MessageBox.Show("Tables successfully created.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Error while creating tables:\n\n" + tableCreationOutput, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

    public string CreateTables()
    {
        string createDaysTableScript = "CREATE TABLE 'CSBO_Days' ("
                                        + "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,"
                                        + "`Date`   datetime,"
                                        + "`Hours`  decimal(2, 2),"
                                        + "`IsPartTime` bit,"
                                        + "`Notes`  TEXT"
                                        + ")";
        try
        {
            dbConnection.Open();
            SQLiteCommand createTablesCommand = new SQLiteCommand(createDaysTableScript, dbConnection);
            createTablesCommand.ExecuteNonQuery();
            return null;
        }
        catch(SQLiteException ex)
        {
            return ex.ToString();
        }
        finally
        {
            dbConnection.Close();
        }
    }
}

我只是创建文件夹和.db文件以防它们不存在,然后我调用表创建方法并返回最终异常以查看表是否已创建。

编辑2

根据要求,这是dbConnectionString之前的dbConnection.Open()输出:

enter image description here

0 个答案:

没有答案