单无法打开SQLite数据库(Mono can't open sqlite database

2019-08-01 00:40发布

我试图做一个SQLite数据库v3的一个非常基本的连接,我使用MonoDevelop的3.0和Mono 2.10,但无法得到连接到数据库。 我可以让应用程序创建数据库,但随后立即失败尝试连接到它。 有什么建议? 我已经开始与不同的数据库,但后来决定让我的应用程序试图创建一个数据库空,然后连接到它。 这似乎仍然失败。

SqliteConnection.CreateFile("db\\DataWorksProg.s3db");
SqliteConnection conn = new SqliteConnection("Data Source=file:db\\DataWorksProg.s3db");
conn.Open();

这一小段代码失败,有关无法打开数据库文件中的错误。

Mono.Data.Sqlite.SqliteException: Unable to open the database file

权限看行,我有Sqlite3.dll项目,它似乎是工作确定。 我错过了什么明显? 我在Visual Studio的一侧还不错,但还是相当新鲜的单声道/ MonoDevelop的环境中工作。

Answer 1:

什么平台?

我不相信你需要创建一个文件。 如果它没有找到,IIRC,它会让数据库文件。

FWIW,在Mac上,我做(注意URI到一个相当标准的路径,我没有使用过Data Source )...

using System;
using System.Data;
using Mono.Data.Sqlite;

namespace test
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            IDbConnection conTemp = null;
            IDbCommand cmdTemp = null;

            conTemp = (IDbConnection)new SqliteConnection ("URI=file:/Users/userName/mnmh.db");
            conTemp.Open ();
            cmdTemp = conTemp.CreateCommand ();         
            cmdTemp.CommandText = "SELECT * FROM employee";
            IDataReader drTemp = cmdTemp.ExecuteReader ();
            while (drTemp.Read()) {
                Console.WriteLine (drTemp.GetString (0));
            }


        }
    }
}

等等等等。

检查显而易见的 - 你提到你正在使用的所有的东西,等等。



Answer 2:

在这里找到了我的问题。 显然不是使用

"Data Source=file:db\\DataWorksProg.s3db"

我本来应该使用

"URI=file:db\\DataWorksProg.s3db"

切换到URI和它的作品如预期。 我从阅读,根据2.0配置文件,需要代替URI数据源部分的文档想,但我得到了我希望的结果。



文章来源: Mono can't open sqlite database
标签: c# sqlite mono