読者です 読者をやめる 読者になる 読者になる

人生、徒然なるままに。

IT系の話題をメインに。DIYer。C#er。旅行/天文好き。

【雑記】Windows embedded 7とSQL Server Compact3.5の相性

Windows embedded 7機 + SQLCe3.5 + Visual Studio 2008 SP1環境で見事ハマり、そして解決しました(結果的に)。

 

 

元々、Win CE5とか6機でSQL Ceを使っていた際は、特に相性問題もなく、メーカーSDKだけでリファレンスも上手くいっていたのですが、

7機ではDataAdapterでFillする際にExceptionでアララ・・・という感じに。

 

その時点でバージョンの問題だろう、ととりあえずどんなバージョンがあるのか確認。

blogs.msdn.com

 

SQL Ce3.5だけで15回近く更新されています・・・多いね。

 

VS2008SP1のプロジェクト上ではアセンブリバージョン3.5.0.0が参照されていて、Win emb7上のWindowsディレクトリには2010年ぐらいにビルドされたSqlCe系が同梱されていたので、順に古い方から当ててアセンブリバージョンを上げようとしたが・・・SP2まで上げてもリファレンスバージョンが上がらない・・!ここでハマった。

参照する箇所のアセンブリが置き換わらないみたいだったようで。

 

あきらめかけていたところで、解決に導いてくれた記事を発見。

Matching up SQL CE DLL version numbers « TryCatchFinally.net

 

結論から言うとWinCE機の使用できるSQLCEのバージョンとプロジェクト上で使用するバージョンを合わせろ、つまり、Microsoft SQL Server Compact 3.5 Service Pack 2 for Windows Mobile を当てろ、とのこと。

Download Microsoft SQL Server Compact 3.5 Service Pack 2 for Windows Mobile from Official Microsoft Download Center

 

こんなのあるの知らなかった・・・当てたらSystem.Data.SqlServerCeが参照するアセンブリの箇所のDLLもアップデートされて、無事Win emb7機でも同様にデータベースファイルにアクセスできるようになりました。

 

SQL Server CompactEditionには様々なバージョンがあるので、

それらを意識して使い分けましょう、との教訓でした。