ジョイ・オブ・プログラミング:
VB研読者向け 特別企画

極小SQL Server Compactでデータベース・アプリをお手軽作成

シグマコンサルティング 菅原 英治
2008/07/01
Page1 Page2 Page3

SQL Server Compact 3.5について

 サンプル・アプリにおいて、データベース機能を実現しているのがSQL Server Compact 3.5です。本稿冒頭で紹介したとおり、SQL Server Compact 3.5は、スタンドアロンのWindowsデスクトップ・アプリやモバイル・アプリに組み込んで利用する際に最適なデータベースです。

 わたしは、特にモバイル・アプリでの利用にビジネス的なチャンスを感じています。近い将来、とても魅力的な(iPod Touch、iPhoneの対抗馬となるような)Windowsモバイル端末が出現するかもしれません。SQL Server Compact 3.5は、そのような端末向けのアプリを作成するときにとても役立つはずです。

 SQL Server Compact 3.5の詳細については、次のMSDNを参考にしてください。

SQL Server Compact 3.5の特徴

 では、簡単にSQL Server Compact 3.5の特徴について解説します。

サイズの小さい組み込みデータベース

 最大の特徴としては、データベース・エンジンのサイズが非常に小さい組み込みデータベースであるという点です。また無償で利用することができます。

 データベース・エンジンのサイズは、インストール対象のデバイスによりますが、約2.2〜2.6MBytesです。そのためインストールも非常に簡単です。マイクロソフトが提供する無償のデータベースとしてはSQL Server 2005 Express Editionがありますが、それをインストールするために必要なディスク容量が(本体だけで)200MBytes以上であることを考えると、比較にならないほど小さいことが分かります。

 さらに、本稿最後のコラムで触れていますが、SQL Server Compact 3.5のクライアントへのインストール作業は、単に9つのファイルをXCopyで配置するだけです。

【コラム】Silverlightで利用できる?

 わたしがSQL Server Compact 3.5の利用について考えたとき、初めに思い付いたのはSilverlightアプリでの利用でした。本稿で述べたとおり、SQL Server Compact 3.5はサイズの小さい組み込みデータベースなので、Silverlightアプリで利用するローカルのデータベースとして最適だと思えたからです。

 残念ながら、現在のところSilverlight(執筆時点で最新バージョンはSilverlight 2 Beta 2)では、SQL Server Compact 3.5を利用することができません。

 その理由は、SilverlightからSQL Server Compact 3.5の機能を提供するDLL(System.Data.SqlServerCe.dll)を利用できないためです。また、仮にそのDLLを利用できたとしても、Silverlightの配布モジュールであるXAP(ザップと読む)ファイル内に.DLLファイルとデータベース・ファイルを含めてしまうと、Silverlightアプリとしてはファイル・サイズが大きすぎるという問題があるでしょう。

SQL Serverとの違い

 MSDNの次の項目を見ると、SQL Server Compactと通常のSQL Server(Express/Workgroup/Standard/Enterprise Edition)の機能を比較できます。

 この表を見ると、SQL Server Compactでは、かなりの機能がサポートされていないことが分かります。特にストアドプロシージャとトリガがサポートされていないことには、注意をした方がよいでしょう。ただし今回のサンプルのような使い方であれば特に問題ありません。

 また、利用できるデータの型に違いがあるので注意が必要です。詳しくは、次のMSDNを参考にしてください。

 これらの理由から、SQL Server Compact向けに作成したテーブルの定義やSQL文は、通常のSQL Serverではそのまま実行できない可能性があります。そのため、後からExpress Editionに移行したいと考えても簡単ではないでしょう。

そのほかの特徴

 以上がSQL Server Compactの主な特徴ですが、そのほか注意すべき点について何点か挙げておきます。

 まず、データベースのデータ領域として利用できるサイズは最大4GBまでです。そして、LINQ To SQLに対応しています(しかし、ストアドプロシージャなど、対応していない機能は利用できません)。

 また、Microsoft AccessでSQL Server Compactのデータベースを利用できないので、注意が必要です。Visual Studio、SQL Server Management StudioおよびSQL Server Management Studio Express Editionからのみ利用可能です(詳しくは以下のコラムを参照)。

【コラム】SQL Server Compact 3.5を利用できる開発環境

 執筆時点でSQL Server Compact 3.5のデータベースを利用できる開発環境はVisual Studio 2008だけです。SQL Server 2005 Management Studioでは、SQL Server Compact 3.5より前のバージョン(2.0、3.0、3.1)のデータベースしか開けません。

 また、SQL Server 2005 Management Studio Express Editionでは、SP2を適用したもので、SQL Server Compactに対応しています。しかし、こちらもSQL Server Compact 3.5のデータベースを利用できません。

 冒頭に述べた、Visual Basic/C# 2008 Express Editionを使用対象から外した理由は、ここにあります。GUIツールなしでデータベース・アプリを開発するのはとても大変です。

 SQL Server Compact 3.5は、SQL Server 2008 Management Studio(およびExpress Edition)で対応されることを期待したいですね。

SQL Server Compact 3.5のデータベースを利用する

 ここでは、SQL Server Compact 3.5のデータベースを利用する方法を解説します。

 SQL Server Compact 3.5のデータベースは、.SDFファイルとして保存されます。Microsoft Accessの.MDBファイルと同じようなものだと考えると分かりやすいでしょう。

 それでは、実際にサンプル・アプリで利用している.SDFファイルを、Visual Studio 2008で開いてみましょう。なお、Visual Studio 2008では、最初からSQL Server Compact 3.5が利用可能になっていますので、別途インストールする必要はありません。

.SDFファイルを開く

 Visual StudioのIDEが起動したら、次のメニュー・バーの[ツール]−[データベースへの接続]を実行してください。

 初めて[データベースへの接続]を実行した場合は、[データソースの選択]ダイアログが表示されます(一度、[データベースへの接続]を実行し、その際に、[常にこれを選択する]をチェックしていた場合、[データソースの選択]ダイアログは表示されません)。[データソース]から「Microsoft SQL Server Compact 3.5」を選択し、[続行]ボタンを押してください。

[データソースの選択]ダイアログ

 これにより次の[接続の追加]ダイアログが表示されるので、[データベース]欄にダウンロードしたサンプルの.SDFファイルのパスを入力してください(もちろん[参照]ボタンから選択しても構いません)。そして、[パスワード]欄に「strongpassword」と入力してください。入力したら、[OK]ボタンを押してダイアログを閉じます。

[接続の追加]ダイアログ

 入力内容に問題がなければ、次の画面のように[サーバー エクスプローラ]上に、サンプル・アプリのデータベースである「idea.sdf」が登録されます。テーブルとしては、IDEAテーブルが存在することが分かります。

[サーバー エクスプローラ]に登録された「idea.sdf」

.SDFファイルのデータベースを操作する

 [サーバー エクスプローラ]に.SDFファイルの登録さえできれば、.SDFファイルのデータベース操作はとても簡単です。SQL Server Management Studioに近い感覚でデータベースを操作できます。

 試しに、IDEAテーブルの定義を確認してみましょう。[サーバー エクスプローラ]のIDEAテーブル上で右クリックをし、コンテキスト・メニューから[テーブル スキーマの編集]を選択してください。次のような[テーブルの編集]ダイアログが表示され、テーブルの定義を確認できます。

[テーブルの編集]ダイアログ
IDEAテーブルの定義が表示されている。

 [テーブルの編集]ダイアログでは、テーブルの定義の確認だけではなく、テーブルに対してデータを追加することも可能です。一度[テーブルの編集]ダイアログを[キャンセル]ボタンで閉じ、再度IDEAテーブル上で右クリックをし、[テーブル データ表示]を選択します。

 選択すると、Visual Studio上にテーブルを編集するためのスプレットシートが表示されます。このスプレッドシートを使って、テーブルに対しデータを入力することが可能です。

テーブル・データを編集できるスプレッドシート
テーブルに対しデータを入力するなどのデータベース操作が可能。

 SQL Server Compact 3.5のデータベースの利用方法については以上です。このように、通常のSQL Serverデータベース開発のときと同じように、Visual Studio 2008から本当に簡単に利用できることが理解できたでしょうか。

 それでは、最後にサンプル・アプリのソースについて解説します。


 INDEX
  [VB研読者向け 特別企画]
  ジョイ・オブ・プログラミング:SQL Server Compact 3.5
  極小SQL Server Compactでデータベース・アプリをお手軽作成
    1.お手軽Windowsデータベース・アプリのサンプル
  2.お手軽データベースの秘密:SQL Server Compact 3.5
    3.サンプル・アプリのソース解説

 ジョイ・オブ・プログラミング


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH