Microsoft SQL Server Compact Editionのsfdファイルをvb2005から参照できる方法は?
- WindowsMobile6の開発をしております。
Mobile側の開発は出来そうな感じにはなったので、データを出力する部分を作ろうかと思っております。
言語:VB2005
出力元:DBサーバー上のSQLServer2005
出力先:SDカード上のSQLServer Compact Edition3.1のsdfファイル
になっております。
System.Data.SqlServerCe.SqlCeConnection(接続文字列)は使えませんし、
System.Data.SqlClient.SqlConnection(接続文字列)も使えないと思います。
だれか知恵を授けていただけませんか?- 移動高橋 忍MSFT, モデレータ2009年5月19日 7:00 ([Loc]From:Windows Mobile フォーラム)
- 移動高橋 忍MSFT, モデレータ2009年5月19日 7:01 ([Loc]From:Windows Mobile - VB, C# フォーラム)
すべての返信
具体的にどこが問題なのでしょうか? 例えばSQL Server 2005への接続ですとSqlConnectionが必要ですが、これは参照設定でSystem.Data.SqlClientを加えてあげないといけないかもしれません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- えっと、タイトルをよく読んでいませんでした。すみません。タイトルを読む限り、sfdファイルを読みたいということなんでしょうか?
私はWindowsMobile6の開発は経験がありませんが、WindowsフォームからsfdファイルへはSqlCeConnectionで接続したことがあり、特に問題なく行えました。SqlCeConnectionが使えないと書かれていますが、具体的には何か例外でも発生するのでしょうか? もしくはコンパイルエラーになるのでしょうか?
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/ ご返答ありがとうございます。
①「System.Data.SqlServerCe.SqlCeConnection(接続文字列)」ですと、compact Framework用ですので使えないですよね。
②「System.Data.SqlClient.SqlConnection(接続文字列)」はSQLServer用なので直接ファイル指定はできないでしょう。
①で参照設定をして使ってみたところ、
ファイルまたはアセンブリ 'System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'、
またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。
(HRESULT からの例外: 0x80131040)
とエラーが出て使えないんですよ。
SQLServerのフォーラムにも出来るような出来ないようなこと書いてあるんですけど。。。いまいち的をえていないような感じなのです。- Imports System
Imports System.Data
Imports System.Data.SqlServerCe
Dim eng As SqlCeEngine = New SqlCeEngine(cnnstring)
eng.CreateDatabase()'データベースOPEN
Dim conn As New System.Data.SqlServerCe.SqlCeConnection(cnnstring)
conn.Open()
以下省略
という感じで出来るらしいのですが、赤字のところで
ファイルまたはアセンブリ 'System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'、
またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。
(HRESULT からの例外: 0x80131040)
が出るので進めません。 - すみません。
現状何が問題なのか、たぶんどなたもわからない状況です。
できればもう一度問題を整理してご質問ください。
単純に以下のようなコードではNGでしょうか?
Dim cn As New SqlServerCe.SqlCeConnection
cn.ConnectionString = "Data Source=\SQL\sample.sdf"
cn.Open()
:
マイクロソフト エバンジェリスト 高橋 忍 こんばんは!(^^)!ふ~です。
状況を具体的に整理すると以下のような組み合わせでしょうか?
DBサーバー:Windows200X Server + SQLServer2005
携帯クライアント:WindowsMobile6 + SQLServer Compact Edition3.1
ここで、携帯クライアント側で、データの取得、出力が、タイプの異なる
SQLサーバーが2種類存在するので、困ったと言うことと思います。作り易くするには、携帯クライアントのSQLServer Compact Edition3.1は
使わないことです。携帯クライアントのデータをDBサーバー側に格納し、共有すると便利です。
以下の接続文字列は、携帯クライアントからSQLEXPRESSを呼び出した例です。
つまり、普通のパソコンのクライアント側と同様にプログラミングが出来ます。<connectionStrings>
<add name="xxxxConnectionString" connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename="C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\
XXXXX01.mdf";Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>


