2

私は C# が初めてで、System.Data.SQLite を使用して DB 接続をセットアップしようとしています。Compact Framework バイナリ バージョン 1.0.84 を使用しています。および Windows Vista および .net 3.5

私は SharpDevelop を使用しています。この問題を扱った他の投稿をいくつか見ましたが、それらは、私が使用していない何らかの形式の Visual Studio でプロジェクト プロパティを変更することによって解決された 32 ビット対 64 ビットの問題であることが判明したと思います。また、IDE でプロジェクトのプロパティを確認したところ、表示されるすべてのオプションが x86 および 32 ビットを指していました。また、プロパティで「Any CPU」を使用してみましたが、うまくいきませんでした。

関連するコードは次のとおりです。

try{

 SQLiteConnection conn;

 conn = new SQLiteConnection("Data Source=C:\\my path");

 conn.Open();
 conn.Close();
}
catch (SQLiteException ex){
   throw new Exception(ex.Message);

}

デバッグで実行しているときに発生する例外は次のとおりです。ローカル パスを置き換えました。

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception de HRESULT: 0x8007000B)
in System.Data.SQLite.SQLite3.Open
in System.Data.SQLite.SQLiteConnection.Open
in mypath 
in System.Windows.Forms.Control.OnClick
in System.Windows.Forms.Button.OnClick
in System.Windows.Forms.Button.OnMouseUp
in System.Windows.Forms.Control.WmMouseUp
in System.Windows.Forms.Control.WndProc
in System.Windows.Forms.ButtonBase.WndProc
in System.Windows.Forms.Button.WndProc
in ControlNativeWindow.OnMessage
in ControlNativeWindow.WndProc
in System.Windows.Forms.NativeWindow.DebuggableCallback
in         ComponentManager.System.Windows.Forms.UnsafenativeMethods.IMsoComponentManager.FPushMessageLoop
in ThreadContext.RunMessageLoopInner
in ThreadContext.RunMessageLoop
in System.Windows.Forms.Application.Run
in mypath

また、SQLite.Interop.084.dll を参照として追加すると、不正なイメージ ファイルまたはメタデータがないという警告が表示されます。「ローカル コピー」オプションは、プロパティでグレー表示されます。

古いバージョン (1.0.66) の DLL を置き換えたところ、「MSB3247 - 同じ依存アセンブリの異なるバージョン間で競合が見つかりました」というメッセージが表示されます。

プロジェクト フォルダー内のすべてを削除し、最初からやり直しましたが、行き詰まり続けています。Compact Framework のソリューションの実装に成功した人はいますか? ポケット pc で使用できる同様のデータベース マネージャーを提案できる人はいますか?

  • バージョン 1.0.66 で何時間も格闘した後、バージョン 1.0.84 に戻りました。今、次のメッセージが表示されます: c:\dev\sqlite\dotnet\System.Data.SQLite にあるファイル SQLite3.cs を読み込めません。

そのパスは、dll を開発したマシンからのものでなければならないので、アダプターに問題があると推測しています。今は別のデータベース ソフトウェアを試してみたいと思うので、現時点では、解決策ではなく、その点について提案を行うことにします。

これについての助けをいただければ幸いです。

4

2 に答える 2

3

わかりましたので、「通常の」Windows バージョンを試してみましたが、最初の試行で機能しました。私は何も違うことをしませんでした。残念ながら、Pocket PC 用に開発する必要があるので、まだ困っています。

Compact Framework のバイナリには何らかの欠陥があり、C# のあいまいな例外もあまり役に立たなかったと思います。バイナリは 64 ビット マシン用に開発され、そのまま放置されていたと思います。

したがって、基本的に、System.Data.SQLite for Windows Compact Framework を使用すると、バージョン 1.0.66 または 1.0.84 のいずれも実行できません。少なくとも箱から出して。別のバージョンを探して、何が出るか見てみます。

*この投稿への返信が「多く」ないことは承知していますが、この情報を探していた場合、関連する情報を見つけたいので、ここに残しておきます。

于 2013-03-15T05:26:21.103 に答える