しばらく私のF-Spotデータベースに問題がありましたが、何も壊れていません。しかし今、私のように思えます。私は起動時にクラッシュするので、F-Spotを起動することさえできません。コンソールを確認すると、何が壊れているかは、 "System.UriFormatException:URIスキームは文字で始まり、アルファベット、数字、 '+'、 ' - 'または '。'のいずれかでなければならないというメッセージのあるUriFormatException
です。キャラクター。"。これは、Microsoftのランタイムではなく、Mono 2.4.4.0で実行されています。簡単なMono/C#アプリケーションからSQLite3データベースを読み込みますか?
基本的には、正確なデータ行が壊れているかどうかを調べるため、修復するか、F-Spotに対するバグレポートを提出することができます。 (私はこの問題を引き起こした可能性のあるデータベースファイルに直面していましたが、いずれにしても、それはハードでクラッシュするよりも良いものを処理するように見えるでしょうが、この瞬間に私はもっと興味がありますデータベースがSQLite3ファイルであり、コマンドラインsqlite3
のアプリケーションで手動で実行している場合、私は両方ともテーブルメタデータに対して次のように選択できます。データテーブルそのものと同じように。しかし、単純なテストアプリケーションからMono.Data.SqliteClient.SqliteConnection.Open()から処理されない例外System.ApplicationException: file is encrypted or is not a database
が得られます。これは、コピーペースト以外は何もありません。the official guide for SQLite and Monoです。自身sqlite3の(データベースファイルが間違いなくある
public static void Main(string[] args) {
string connectionString = "URI=file:f-spot.photos.db";
IDbConnection dbcon;
dbcon = (IDbConnection) new SqliteConnection(connectionString);
dbcon.Open();
dbcon.Close();
dbcon = null;
}
、細かい作業をしている:私は完全を期すためにもここに関連するコードをコピーしています、のSystem.Data.dllとMono.Data.SqliteClient.dllに対してリンクそれについての苦情はありません)。グーグルでは、さまざまな小規模なデータベースエンジンを比較しているページがたくさんあります。ファイルのヒントはおそらくSQLite2データベースです。しかしAFAIK私のシステムにはSQLite2ライブラリがありません。file
はそのファイルが "SQLite 3.xデータベース"であると主張しています。それだけでなく、0.3.5 require SQLite 3より新しいF-Spotバージョン、そして私はバージョン0.6.2になっています。私は間違ったAPIを使ってそれを読んでいるのですか、あるいはDSNが間違っていますか?
何を試してもらうための提案はありがたいです。確かに私はsqlite3
を使ってデータを抽出し、それをテキストファイルに保存し、それらを解析しますが、F-Spotと同じAPIの近くで使用することで可能ならば避けたいという不確実性の層をもうけます私はデータにアクセスすることができます。