DOBON.NET DOBON.NETプログラミング掲示板過去ログ

winアプリのDBを動的に作成するには?

環境/言語:[C#, .NET Framework2.0]
分類:[.NET]

はじめてWindowsアプリを作成しています。

アプリのDBをVisualStudioで“新しい項目を追加>サービスベースのデータベース”でmdfデータベースを生成していましたが、sqlserverがないと読み書きできない、後からカラム、テーブル追加の対応はどうするかなど、色々と問題がでてきました。

そこで質問なのですが、
1. Windowsアプリのデータベースは一般的にどのタイプで生成されているのでしょうか。
2. 1.をプログラムから動的に生成するにはどのようにすればいいでしょうか。参考URL等があれば助かります。
3. mdfファイルを動的に生成する方法はありますでしょうか。カラム追加などにデータ移行しつつ対応する方法はありますでしょうか。

質問が二分してしまいましたがよろしくおねがいします。
■No25349に返信(ももやさんの記事)
> 1. Windowsアプリのデータベースは一般的にどのタイプで生成されているのでしょうか。
汎用言語ですから、各種データベースを取り扱えます。
とりたてて一般的とされる物は無いかも知れません。
XML や CSV で管理する事も出来ますし、

*.accdb  (例:Access 2007)
*.mdb    (例:Access 2003)
*.sdf    (例:SQL Server Compact Edition 3.5)
*.mdf    (例:SQL Server 2008 Express Edition)

などを使う事もできるでしょう。他にもいろいろ。


> 2. 1.をプログラムから動的に生成するにはどのようにすればいいでしょうか。
mdb や mdf や sdf なら、アプリの一部として一緒に配布されるよう、
インストーラに組み込んでしまえば良いと思います。

EXE 単体で動作するようにしたいなら、EXE の内部リソースとして保持しておき、
初回実行時に、それを適当なフォルダにコピーしてから使うという手もあります。


> 3. mdfファイルを動的に生成する方法はありますでしょうか。
動的に生成するのではなく、空の mdf を事前に用意しておき、
それをコピーして使った方が、トラブルが少ないかと思います。


> カラム追加などにデータ移行しつつ対応する方法はありますでしょうか。
テーブル定義の変更は、実行時にやるべき事でも無いような気もしますが、
一応、ALTER TABLE や CREATE TABLE といった DML を実行してやることで
自由に変更することができます。

(ALTER TABLE 等の構文は、データベース付属のリファレンスで確認してください)

DOBON.NET | プログラミング道 | プログラミング掲示板