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

What platform?

I don't believe you need to create a file. If it's not found, iirc, it'll make the database file.

Fwiw, on a Mac, I'm doing (note URI to a pretty standard path; I haven't used 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));
            }


        }
    }
}

etc etc

Check the obvious -- you've referenced all the stuff you're using, etc.

references required

于 2012-09-29T01:59:20.377 に答える
0

ここで私の問題を理解しました。どうやら使用する代わりに

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

使っておくべきだった

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

URIに切り替えて、期待どおりに機能します。ドキュメントを読んで、2.0プロファイルでは、URIの代わりにDataSource部分が必要だと思っていましたが、探している結果が得られました。

于 2012-10-05T22:46:30.013 に答える