質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

8回答

29472閲覧

C#とDBの連携。  DB組み込みの基本について

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2016/01/17 06:43

現在、趣味レベルでツール開発を行っています。
※職業はIT系ではありません

VisualStudioのC#にて、システムを作っており
今現在はシステム/入力情報はすべてテキスト形式でファイル出力し、
テキストファイルを読み込む形式ですべて動作しています。

ファイル自体が大きくなったこともあり、
データベースというものを使ってみようと思ったのですが、
どのようなものが良いのでしょうか?

有償、無償。 組み込んだツールの配布が可能か否か。
もし可能でしたら、貴方が使った所感等も含めて解説していただけませんでしょうか?

ちなみにOracleやSQLサーバなど有名レベルは名前だけ知っているレベルで、
実際に使ったことはほとんどありません。
※実際にオラクルの無料版だけ数年前インストールし、テーブルというもの等をSQL文にて
1回作ったことがある程度のレベルです。その時にSQL分の書籍だけは何冊か読んだことはあります。
実際組み込もうと思ったのですが、当時の私には技術力+調べ方が足らずツールに組み込めませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答8

0

スタンドアロン(ファイルベース)のDBMSで良ければSQLiteが定番です。無料で使えますし、ライブラリ形式ですのでサービスやドライバー等のインストールが不要というお手軽さもあります。SQLiteを利用して作ったアプリの配布も可能です。

元々はC/C++向けですが、.NET Framework向けのパッケージもSystem.Data.SQLiteという名前で提供されています。私自身はC#では使ったことがないのですが、試しに「NuGet パッケージ マネージャー」で「sqlite」と検索してみたらすぐに見つかりました。ですのでプロジェクトへの組み込みも簡単です。お試しで使ってみるのも良いと思います。


追記
DBを使うアプリを作る際は、DBに接続してテーブルの内容を確認したりSQLを実行したりするGUIツールを使うと作業がはかどります。もちろんSQLiteのデータベースファイルを読み書きできるフリーのGUIツールもあります。

投稿2016/01/17 07:59

編集2016/01/17 08:34
catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ボリューム感がわからないのでなんともですが、私の遍歴を書いておきます

インストールしなくても使えるレベル

スタンドアローン環境が前提です
多分作り方しだいだと思うのですがMDBファイルは壊れやすいとまことしやかに語られています
個人的には10年近く、10万レコード程度のものを使ってもらってますが一度も壊れた事がありません

  • MDBファイル

結構定番な気がします
ADO.NETのOleDbCommand経由等でアクセス
OfficeのPro以上 or Access単体を持っているとハードルが非常に低いです
クエリもAccessでささっと作れるので
使うのを辞めた理由:EntityFrameworkでサポートされていない

  • SQLite

各地で人気なようですね
さくっと使えなくて使うのをやめました
EntityFramework6までで、使えないことはないけれども嵌りどころが多くて、非推奨ながらもSQLCE(SQL Server Compact)に行きました
EntityFramework7からフルサポートみたいな話も見たので、今後が楽しみなところです

  • SQLCE(SQL Server Compact)

SQLServerのサブセット版です
といいながら結構違うので嵌りがちです
SQL Server Compact と SQL Server の相違点
EntityFrameworkにも対応しているので、書き捨てのものでは便利に使っています
ただ今後バージョンアップされない事が正式発表されています(使用は非推奨とのMSの発表も出てた気が)
使うのなら
SQL Server Compact/SQLite Toolbox
が役にたちます
あとSQL ServerにはLocalDBもあり、今後はこちらが使用推奨のようです
特に開発の時にはSQL Serverを用意しておかなくても使える
本番運用はどうでしょう
まだ実績がありません

サービスをインストールする必要あり

マルチユーザー環境で使うならサービスをインストールした方がいいです(パフォーマンス的にも対障害性的にも)
深くは語りませんがEULAに適合する環境もいりますし(配布先に理解してもらうのが...)

  • SQL Server

開発で使うにはなんだかんだで良くできています(特にVisualStudioとの連携)
Express版は無償で使えていいのですが、構築したシステムでお金を取るなら最初からStandard版以上にしておいた方がいいです
Express版からStandard版へのアップグレードも相当面倒くさいことになることがあるので

  • その他(MySQL、Oracle、...)

バージョンアップの端境期にADO.NET データプロバイダのクオリティが揺れるので、過去に泣いたことがあるので個人的には基本避けています

これから

要件的な(一番はコスト的なものですが)問題が許せば、これからはDBはクラウド側に置くようになるのかなと
AzureのSQLDBは相当よいです(MSのベンダロックイン上等なら)
ただ時間のかかるクエリは終了する前に切られてしまうことがあるので、それを知らないと???ってなることが(そもそもそんな時間のかかるクエリをクラウド側に投げるのが間違い?)
別途webサービスの開発も要りますが、DBのお守りをほぼしなくて良くなるのは何事にも代えがたい

投稿2016/01/17 20:02

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

現在、趣味レベルでツール開発を行っています。
※職業はIT系ではありません
VisualStudioのC#

なのですから、Windowsで、Win Form Project であれば、
MS-SQL Server 2012 / 2014 などが、妥当で穏当なところ。
Visual Studio 20xx communityやProfessional以上 を使っているのであれば、
MS-SQL Server 20xx express は導入済みかもしれません。
⇒導入済みの場合は、Management Studio/Managemnt Studio express が入っているかどうか確認して、
未導入の場合は、導入する。
MS-SQL Server を個人で使用したり、DBのメンテナンスをしたくない場合は、
データベースの復旧モデル:単純 とする。
差分、完全とした場合は、定期的なトランザクションログのバックアップが、
最低限必要な定期JOBとなります。
DBの破損チェック、インデックスの再構成、再作成は手動でも可能です。
MS-SQL Server 20xx express にはメンテナンスプランの自動実行機能 が付いていないので
手動実行をするか、タスクスケジューラから定期実行する事になります。
Web系の場合で、ASP.NETの場合は、やはり、MS-SQL Server系
Apache を使うのであれば、ミドルウェア次第です。
Oracle / MySQL / PostgreSQL などは、MS-SQL で雰囲気を掴んでからでも
遅くはありません。
番外:sa / password無は、MS-SQL 2005では癖があるので、設定に苦労します。

投稿2016/01/17 07:49

編集2016/01/17 08:01
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず手間なく試すならAccessかなと思います。
テーブル作成、インデックス作成、クエリー作成などがGUIでささっと作れます。
初期データやテストデータ登録も楽です。
うん千万件とかのレコードになると無理があるかなと思いますが、バックアップもただのファイルコピーだし。
でも、DBサーバーではないのである程度の規模になるなら、回答者の皆さんが推奨しているような製品がよいと思います。
私はpostgreSQLやDB2を使いますが、推奨しません笑
Accessって有料ですよね。とりあえず試すができるのかがよくわかりません。
Aceessはクライアントアプリケーションです。
他のPCで動かすには、それぞれAceessをインストールする必要があります。
スタンドアローン&ローカルアクセスならそれなりに高速だと思いますよ。
Access runtimeというものがあるみたいですね。開発はできないけど実行はできるみたいです。
https://www.microsoft.com/ja-jp/download/details.aspx?id=50040

投稿2019/07/17 01:50

編集2019/07/17 02:54
boyon

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人で学習する場合、SQLiteの様な軽量なものが良いかと思います。
私は勉強の為に作成しているAndroidアプリにはSQLiteを内蔵しました。

ただ、今後はネットワーク越しのDBアクセスにトライしてみたいという事なら、SQL Server ExpressやMySQL等のRDBをお勧めします。
RDBに関しては本稿と似たような質問をしたことが有りますのでご参考までに。
https://teratail.com/questions/24874

投稿2017/03/08 08:25

kurori

総合スコア111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

趣味レベルであればDB操作を行ってみて、できそうならトライしてみるのがいいかと思います。私もいくつか試してみましたが、どれも一長一短あり、現在はMySQLを.Net用のconnectorで楽しんでいます。

投稿2017/03/08 07:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私はInterBase(Borland)を使っていた事もありFirebirdを継続して使っています。
Firebird wiki
(現在は隠居の身なので個人的に触れる程度ですがw)
C#は分かってないのでインタフェース部分がどうなるのか分かりませんが(.NET Data Providerがあるのでそれを使うのか?)、C++,javaとは相性がいいようです。
javaでjdbcを使えば読み出しだけなら(カラム数+)数行で書けます。
・・
組込み系が多いので、工場での資材管理などに使いましたが1日1万件程度の資材追加/削除/照合では特に問題はありませんでした。(言語はC++)

投稿2016/01/17 07:05

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

趣味でやっているのであれば、Oracle Express Edition に再挑戦されては?
Oracle 以外もふくめて検討されるなら、DB選択のヒント 辺りが役に立ちそうです。

投稿2016/01/17 06:53

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問