質問する質問する
 

質問Microsoft SQL Server Compact Editionのsfdファイルをvb2005から参照できる方法は?

  • 2009年3月3日 10:44ヤッターペリカン ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    WindowsMobile6の開発をしております。
    Mobile側の開発は出来そうな感じにはなったので、データを出力する部分を作ろうかと思っております。

    言語:VB2005
    出力元:DBサーバー上のSQLServer2005
    出力先:SDカード上のSQLServer Compact Edition3.1のsdfファイル

    になっております。

    System.Data.SqlServerCe.SqlCeConnection(接続文字列)は使えませんし、
    System.Data.SqlClient.SqlConnection(接続文字列)も使えないと思います。

    だれか知恵を授けていただけませんか?

すべての返信

  • 2009年3月3日 13:10trapemiyaMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

     具体的にどこが問題なのでしょうか? 例えばSQL Server 2005への接続ですとSqlConnectionが必要ですが、これは参照設定でSystem.Data.SqlClientを加えてあげないといけないかもしれません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
  • 2009年3月4日 0:16trapemiyaMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
     えっと、タイトルをよく読んでいませんでした。すみません。タイトルを読む限り、sfdファイルを読みたいということなんでしょうか?
    私はWindowsMobile6の開発は経験がありませんが、WindowsフォームからsfdファイルへはSqlCeConnectionで接続したことがあり、特に問題なく行えました。SqlCeConnectionが使えないと書かれていますが、具体的には何か例外でも発生するのでしょうか? もしくはコンパイルエラーになるのでしょうか?
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
  • 2009年3月4日 1:07ヤッターペリカン ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    ご返答ありがとうございます。

    ①「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のフォーラムにも出来るような出来ないようなこと書いてあるんですけど。。。いまいち的をえていないような感じなのです。




  • 2009年3月5日 2:44ヤッターペリカン ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    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)
    が出るので進めません。

  • 2009年3月26日 6:04高橋 忍MSFT, モデレータユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    すみません。
    現状何が問題なのか、たぶんどなたもわからない状況です。
    できればもう一度問題を整理してご質問ください。

    単純に以下のようなコードではNGでしょうか?

    Dim cn As New SqlServerCe.SqlCeConnection
    cn.ConnectionString = "Data Source=\SQL\sample.sdf"
    cn.Open()
       :



    マイクロソフト エバンジェリスト 高橋 忍
  • 2009年3月28日 16:34!(^^)!ふ~ ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    こんばんは!(^^)!ふ~です。

    状況を具体的に整理すると以下のような組み合わせでしょうか?

    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=&quot;C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\
       XXXXX01.mdf&quot;;Integrated Security=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>