まあデータベースと一口に言っても、実際には何種類も有りまして、例えばフリーライブラリのSqliteとか、MicrosoftのSQL Serverとかです。私のような情弱初心者だと、そもそもどれを使っていいかわからない…ということになってしまいました。
こんなにある… |
・SQL Server Compact 4.0とは、携帯向けのデータベースです。確か、データベースの容量や、使用出来るデータ型に制限があったような気がします。
・SQL Serverはその名の通りです。
・Access データベース ファイルとは、Microsoft Accessで用いるもの…なのでしょうか…?
私の場合、データベースが必要といっても、アプリケーションを動かす場所は固定ではなく、ちょっとデータを保存したり読み込んだりできればいいので、保存場所はどちらかというとローカルの方が良いのです。なので、SQL Serverのうち、LocalDBと言うのを使うことにします。
//最初はLocalDBを知らなかったので、SQL Server Compact 4.0の方を使おうと頑張ってた…
LocalDBを作るには、[ソリューション エクスプローラー]でプロジェクト名を右クリック→[追加]→[新しい項目]で、[サービスベースのデータベース]を選択します。
すると、このようなダイアログが出ると思います。ここでは、Entity Data Modelという機能を使いたいので、右の[Entity Data Model]を選択します。
最初の段階から設計するので、ここでは[空のモデル]を選択。
次に、Entity Data Modelでデータベースの設計をします。こんな画面が出てくると思います。ここでは、GUIツールを用いてぽちぽちとコンポーネントを配置することで、データベースのテーブルなどの設計図(のようなもの)を作っていきます。
まず、右クリック→[新規追加]→[エンティティ]で、エンティティ(テーブルと同じようなもの?)を一つ配置します。ダイアログが出ると思います。ここは主キー(一意に識別するためのIDみたいなもの)と、エンティティに関する設定をします。多分そのままOKでいいような気がします…
Entityへの要素(データ項目)の追加は、Entity上で右クリック→[新規追加]→[スカラー プロパティ]です。追加するとデフォルトでデータ型がStringになっているので、[プロパティ]ウィンドウの[全般]→[型]で適宜変更します。
テーブル間のアソシエーション(SQLでのJOINのようなもの?)は、[ツールボックス]ウィンドウから[アソシエーション]を選択し、マウスでテーブル間をドラッグ&ドロップで繋ぐとできます。
設計し終わったら、この論理モデル(≒設計図)から、実際にデータベース上に生成するための、SQL文を自動生成してもらいます。Entity Data Modelを設計するところの何も無いところを右クリック→[モデルからデータベースを生成]を選択します。
最初のほうでプロジェクトに追加した、ローカルベースのデータベースファイルに接続することを確認します。そうしたら、次に行きます。
DDLというタブに、論理モデルをデータベース上に生成するSQL文が書かれています。[完了]ボタンを押します。
このSQL文を実行するには、左上の▷(右向き三角)マークの[実行]ボタンを押せば大丈夫です。しかし、接続文字列の問題からか、私の場合"database [Database1] does not exist. Make sure that the name is entered correctly."のようなエラーが出てしまい、実行出来ませんでした。どうやらSQL文の先頭の方にある、USE文でデータベースが選択できずにコケているようです。で、
ここで、このようなダイアログが出ることがあります。
ローカルベースの場合(LocalDB)、この接続文字列には"(LocalDB)\11.0"などという文字列が入るものと思われます(参考:MSDN)。 の場面で右下のプロパティ欄に出ている接続文字列が、多分正しいものと思われますが、これをそのまま貼り付けると、文字数超過のようなエラーが出て接続出来ません。
しょうが無いので、[サーバー エクスプローラー]→[*******.mdf]を右クリック→[新しいクエリ]を選択し、自動生成されたSQL文をそのままコピペして実行すると、同じようなエラーが出ますがなぜかテーブルは生成されています(なんでだ)。とりあえずできたので良しとはします…
コピペすると… |
エラーが返ってくるが、なぜかテーブルは出来る… |
//書きかけ