SQL Server や MySQL は、ローカルコンピュータにデータベースをインストールしないといけないので、業務先のコンピュータにインストールするにはちょっと、という感じがします(まぁ、そういう場合は別途サーバー機を作るわけですが)。
逆に、データベース専用にサーバーを作るほどでもない、あるいは、個々のアプリケーションのデータを database として保存しておきたい場合は、「ファイルベース」のデータベースを使うと良いです。
筆頭に上がるのが、SQLite で、データベースのファイルをコピーするだけで使えます。この他にも、
- xml 形式のファイルをデータベースとして扱う。
- access 形式ファイルを扱う。
- Berkeley DB を使う。
という方法もあります。
で、実は余り知られていない(と思う)のですが、SQL Server 互換のファイルベースのデータベースがあります。
ダウンロード詳細 Windows デスクトップ向け Microsoft SQL Server Compact 3.5 および Microsoft Synchronization Services for ADO.Net v1.0
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=7849b34f-67ab-481f-a5a5-4990597b0297
ダウンロード詳細 Windows デスクトップ用 Microsoft SQL Server Compact 3.5 Service Pack 2
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=e497988a-c93a-404c-b161-3a0b323dce24
SQL Server Compact 3.5 オンライン ブック
http://msdn.microsoft.com/ja-jp/library/bb734673(v=sql.100).aspx
と前置きはこれくらいにして、SQLite を使うのもいいけど、compact edition もね、という感じで。compact edition に関しては、windows ce の頃に調べていたのですが、windows phone 7 の場合はどうなんでしょうねえ。次期モバイルには入るらしいのですが。
■ローカルデータベースを追加
visual studio にローカルデータベース(compact edition)を追加します。拡張子は「sdf」ですね。ちなみに、「サービスベースのデータベース」というのは、本家の sql server が使うデータベースファイルです。こっちの拡張子は「mdf」です。
Visual Studio 2010 で作成されるローカルデータベースは、v3.5 のプロバイダでアクセスしています。
「System.Data.SqlServerCe.3.5」のところ。
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="Model1Container" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlServerCe.3.5;provider connection string="Data Source=|DataDirectory|\Database1.sdf"" providerName="System.Data.EntityClient" /> </connectionStrings> </configuration>
■Entity Model を作成
ちょっと工夫が要りますが、Enity Model を作成します。初期値は「Model1Container」になってます。
[img 20120110_05.jpg]
作成されたスクリプトはこんな感じ
-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------
-- Creating table 'Company'
CREATE TABLE [Company] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(100) NOT NULL
);
GO
-- Creating table 'Person'
CREATE TABLE [Person] (
[ID] int IDENTITY(1,1) NOT NULL,
[Name] nvarchar(100) NOT NULL,
[Age] int NULL,
[UpdateDate] datetime NOT NULL,
[Company_ID] int NULL
);
GO
-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------
-- Creating primary key on [ID] in table 'Company'
ALTER TABLE [Company]
ADD CONSTRAINT [PK_Company]
PRIMARY KEY ([ID] );
GO
-- Creating primary key on [ID] in table 'Person'
ALTER TABLE [Person]
ADD CONSTRAINT [PK_Person]
PRIMARY KEY ([ID] );
GO
-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------
-- Creating foreign key on [Company_ID] in table 'Person'
ALTER TABLE [Person]
ADD CONSTRAINT [FK_CompanyPerson]
FOREIGN KEY ([Company_ID])
REFERENCES [Company]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;
-- Creating non-clustered index for FOREIGN KEY 'FK_CompanyPerson'
CREATE INDEX [IX_FK_CompanyPerson]
ON [Person]
([Company_ID]);
GO
compact edtion の場合は、文字列は nvarchar に統一されています。なので、sql server からスクリプトを流用するときは、ちょっと変換が必要ですね。
■接続テスト
簡単な接続テスト
///
/// 接続テスト
///
/// <param name="sender" />
/// <param name="e" />
private void button1_Click(object sender, EventArgs e)
{
Model1Container ent = new Model1Container();
var persons = from t in ent.Person select t;
dataGridView1.DataSource = persons;
}
ナビゲーションプロパティを使って person と company を結合。
///
/// リンク付きで検索
///
/// <param name="sender" />
/// <param name="e" />
private void button2_Click(object sender, EventArgs e)
{
Model1Container ent = new Model1Container();
var items = from t in ent.Person
orderby t.Age
select new {
t.Name,
t.Age,
CompanyName = t.Company.Name };
dataGridView1.DataSource = items;
}
データベースファイル自体は、「Database1.sdf」というひとつのファイルになるので、これをコピーすればどこでも使えます。ああ、あと .net framework 4.0 も必要ですが。
.NET Framework 4 ダウンロード: SDK | MSDN
http://msdn.microsoft.com/ja-jp/netframework/ff687189
ダウンロード詳細 Windows デスクトップ用 Microsoft SQL Server Compact 3.5 Service Pack 2
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=e497988a-c93a-404c-b161-3a0b323dce24
—
追記
SQL Server Compact の場合は、実行ファイルとデータベースファイル(*.sdf)をコピーすれば動くのかと思ったら、別途 SQL Server Compact 3.5 等のインストールが必要になる模様。動かしたときに、プロバイダーが作成できない、という例外が発生する。なので、クリーンなクライアントマシンで単純コピーでは動かないから、数百台のインストールのようなものが発生する場合は、SQLite のほうがいいのかなぁ。できれば、SQL Server Compact のインストールはしたくないので(.NET Framework 4.0 は仕方がないにしても)、適当なアセンブリ(*.dll)をコピーすれば、クリーンな windows 7 マシンでも動作する、っていうのがいいなぁ。





ハウディ と協力利用あなたがしているあなたは私がどのWebホスト知らせる気にしますか?その後、ほとんどの| 速く速く と私は、このブログは多くのことをロードすると言わなければならない| 異なる全く異なる私は3であなたのブログをロードしました。あなたがすることができます価格 でプロバイダ|良い 示唆をお勧めしますか? 栄誉、私はそれを感謝します!
店内全品半額以下SALE http://kiyoto.tokyo/?class81=24948