none
アプリケーションにデータベースを内蔵するには RRS feed

  • 質問

  • データベースアプリ(AccessやSQLサーバー、Excel)を利用できないPCへ

    C#で開発した「蓄積したデータを読み出したり書き込んだり」するアプリを開発したいと思っています。

    上記のようなデータベースアプリがはいっていないWindowsで、アプリの中にデータを蓄積するような

    (読み出しとか書き込み)ことはできるのでしょうか?

    いわゆる、.EXEを実行するだけで、これが実現できてほしいです

    SQLCompactEditionでこのようなことは実装可能なのでしょうか?

    それかおとなしくAccessやSQLを利用するべきでしょうか?

    2014年10月4日 12:31

回答

  • CompactやLocalDBが話題になっている以下のスレッドを、一度お読み下さい。

    LocalDB をどう考えますか?どう捉えていますか?
    http://social.msdn.microsoft.com/Forums/ja-JP/82afff90-bea5-4987-9f4d-857a3c75fc4c/localdb-?forum=sqlserverja


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年10月4日 12:42
    モデレータ
  • ちなみにSQLのようなクエリを必要としているのでしょうか? 用途によってはオンメモリで配列を保持するだけで十分だったりしますが。
    2014年10月4日 13:12
  • > 上記のようなデータベースアプリがはいっていないWindowsで、アプリの中にデータを蓄積
    > するような(読み出しとか書き込み)ことはできるのでしょうか?

    データって何ですか? それがどのようなもので、どのように利用するのかを明確にしてもらわないと、誰も答えようがないですよ。

    簡単なものなら、テキストファイルとか xml ファイルに「蓄積」できますけどそういうものではないのですか?

    2014年10月4日 13:19
  • linqを使えばデータベースでもXMLファイルでも同じような記述が可能ですので、まずはXML等でアプリを作成し、

    パフォーマンスに問題があるようであればデータベースアプリに変更するって方法も有ると思います。

    2014年10月5日 0:11
  • ご質問のタイトルを読み違えていたかもしれません。exeファイル内にデータベースを同梱したいということでしょうか? さすがにそれは無理ですが、みなさんがご紹介されている方法とは別に、

    Visual Studioでアプリケーションの設定を保存する
    http://dobon.net/vb/dotnet/programing/mysettings.html

    をご紹介しておきます。
    アプリケーションの設定では、保存できる型は限られていますが、その中にstring配列がありますので、私はそこにcsvを保存することによって、例えばユーザーが入力した履歴などを保存し、次回以降に素早く入力できるようにするなどしています。もちろん、このcsvはxmlに書き出されますので、アプリケーションを立ち上げ直しても大丈夫です。この方法で対応可能であれば、参考にして下さい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年10月5日 16:03
    モデレータ
  • SQLiteという手もあるかもしれませんね!
    私は、WindowsストアアプリからSQLiteを利用してますが、かなり良いと思ってます。
    動作させるPCの環境にもよって、一概には言えませんが、検討要素としてみてもよいのかもしれませんね

    こんなブログみつけました。
    http://blog.ume108.mobi/?p=3378
    このほかにも、「C# SQLite」で検索すると情報は豊富ですよ~

    以上 見当ちがいでしたらご容赦ください。


    Digital Kids

    2014年10月6日 0:17
  • EXE以外はインストールしたくない という前提でしょうか?
    面倒なセットアップ処理をユーザーにさせられない という理解でいいでしょうか?
    Accessで使用するDBは、Accessがインストールされていなくても.netがあれば読み書きできます。

    .net2.0でもアクセスできますので、VISA以降ならEXE以外は何もインストールしなくてもOKですね。
    (XPは.net2.0のインストールが必要です)
    で、DBはEXEとは別ファイルでいいんですよね?
    最初の配布は、”空のDBをリソースとしてEXEファイルの中に追加”してやり、それを起動時にPCに書き込んでやればいいでしょう。
    テーブル、クエリーも作っておいてそれをリソースに追加するのも楽ですが、ファイルが大きくなるのが嫌ならば(当然Exeも大きくなりますから)、テーブルやクエリーは起動してDBをローカルに書き込んだ時に追加してやればOKです。(これは一部ファイルがインストールされてしまいますが)
    起動時にDBファイルが無ければパスを聞き、新規にインストールしたければファイルを書き込めばいいですね
    で、一度書き込んだら、次からはそれを使うようにプログラムで処理すればいいですね。
    レジストリなどにパス情報を記載しておけばよいでしょう。

    回答になったでしょうか?


    Shigeru Murai / SIMOZ


    2014年10月8日 4:59

すべての返信

  • CompactやLocalDBが話題になっている以下のスレッドを、一度お読み下さい。

    LocalDB をどう考えますか?どう捉えていますか?
    http://social.msdn.microsoft.com/Forums/ja-JP/82afff90-bea5-4987-9f4d-857a3c75fc4c/localdb-?forum=sqlserverja


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年10月4日 12:42
    モデレータ
  • ちなみにSQLのようなクエリを必要としているのでしょうか? 用途によってはオンメモリで配列を保持するだけで十分だったりしますが。
    2014年10月4日 13:12
  • > 上記のようなデータベースアプリがはいっていないWindowsで、アプリの中にデータを蓄積
    > するような(読み出しとか書き込み)ことはできるのでしょうか?

    データって何ですか? それがどのようなもので、どのように利用するのかを明確にしてもらわないと、誰も答えようがないですよ。

    簡単なものなら、テキストファイルとか xml ファイルに「蓄積」できますけどそういうものではないのですか?

    2014年10月4日 13:19
  • linqを使えばデータベースでもXMLファイルでも同じような記述が可能ですので、まずはXML等でアプリを作成し、

    パフォーマンスに問題があるようであればデータベースアプリに変更するって方法も有ると思います。

    2014年10月5日 0:11
  • ご質問のタイトルを読み違えていたかもしれません。exeファイル内にデータベースを同梱したいということでしょうか? さすがにそれは無理ですが、みなさんがご紹介されている方法とは別に、

    Visual Studioでアプリケーションの設定を保存する
    http://dobon.net/vb/dotnet/programing/mysettings.html

    をご紹介しておきます。
    アプリケーションの設定では、保存できる型は限られていますが、その中にstring配列がありますので、私はそこにcsvを保存することによって、例えばユーザーが入力した履歴などを保存し、次回以降に素早く入力できるようにするなどしています。もちろん、このcsvはxmlに書き出されますので、アプリケーションを立ち上げ直しても大丈夫です。この方法で対応可能であれば、参考にして下さい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年10月5日 16:03
    モデレータ
  • SQLiteという手もあるかもしれませんね!
    私は、WindowsストアアプリからSQLiteを利用してますが、かなり良いと思ってます。
    動作させるPCの環境にもよって、一概には言えませんが、検討要素としてみてもよいのかもしれませんね

    こんなブログみつけました。
    http://blog.ume108.mobi/?p=3378
    このほかにも、「C# SQLite」で検索すると情報は豊富ですよ~

    以上 見当ちがいでしたらご容赦ください。


    Digital Kids

    2014年10月6日 0:17
  • EXE以外はインストールしたくない という前提でしょうか?
    面倒なセットアップ処理をユーザーにさせられない という理解でいいでしょうか?
    Accessで使用するDBは、Accessがインストールされていなくても.netがあれば読み書きできます。

    .net2.0でもアクセスできますので、VISA以降ならEXE以外は何もインストールしなくてもOKですね。
    (XPは.net2.0のインストールが必要です)
    で、DBはEXEとは別ファイルでいいんですよね?
    最初の配布は、”空のDBをリソースとしてEXEファイルの中に追加”してやり、それを起動時にPCに書き込んでやればいいでしょう。
    テーブル、クエリーも作っておいてそれをリソースに追加するのも楽ですが、ファイルが大きくなるのが嫌ならば(当然Exeも大きくなりますから)、テーブルやクエリーは起動してDBをローカルに書き込んだ時に追加してやればOKです。(これは一部ファイルがインストールされてしまいますが)
    起動時にDBファイルが無ければパスを聞き、新規にインストールしたければファイルを書き込めばいいですね
    で、一度書き込んだら、次からはそれを使うようにプログラムで処理すればいいですね。
    レジストリなどにパス情報を記載しておけばよいでしょう。

    回答になったでしょうか?


    Shigeru Murai / SIMOZ


    2014年10月8日 4:59
  • Naoki.e さん、こんにちは。
    フォーラム オペレーターの星 睦美です。

    フォーラム ユーザーからの返信から何かヒントを得られたのではないかと思います。用途によって様々な方法が考えられますので、私から参考情報として[回答としてマーク] させていただきました。

    次回、質問に役立つ回答がありましたら投稿者から[回答としてマーク]をお願いします。今後ともよろしくお願いします。

    フォーラムのヘルプ: https://social.msdn.microsoft.com/Forums/ja-JP/e164507c-7d3b-47d7-8be8-dd383e61507c?forum=announceja

    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2014年10月24日 5:34