2

我正在尝试与 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 方面相当出色,但在 Mono/Monodevelop 环境中工作仍然相当新鲜。

4

2 回答 2

4

什么平台?

我不相信你需要创建一个文件。如果没有找到,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));
            }


        }
    }
}

等等等等

检查显而易见的——你已经引用了你正在使用的所有东西,等等。

需要参考

于 2012-09-29T01:59:20.377 回答
0

在这里发现了我的问题。显然而不是使用

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

我应该一直在使用

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

切换到 URI 并按预期工作。我从阅读文档中想到,在 2.0 配置文件下,需要 DataSource 部分而不是 URI,但我得到了我正在寻找的结果。

于 2012-10-05T22:46:30.013 回答