Visual Studio 2017でSQL Server LocalDBを使ったWindowsフォームアプリ開発

Visual Studio 2017でSQL Server LocalDBを使ったWindowsフォームアプリを開発してみました。
LocalDBをプロジェクトに組み込みアプリケーションと一緒に配布できるようにしてみました。

#環境
Windows 7 Professional SP1 64bit
Visual Studio 2017 Community
SQL Server Express 2016 LocalDB

※今回はWindows7で問題なく動作しましたが、SQL Server 2016からWindows7はサポート外となったようです。
https://docs.microsoft.com/ja-jp/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server

#LocalDBデータベース作成
LocalDBのデータベースを作成する方法はこちらを参考にしてください。
http://qiita.com/akabei/items/7f62056e44dd2d44f703

#SQL Serverオブジェクトエクスプローラーからデタッチ
SQL Serverオブジェクトエクスプローラーで作成したデータベースをサーバーエクスプローラーから接続しようとするとエラーになってしまうので、その前にデータベースをデタッチします。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/8308d34c-687f-9a43-3b01-c33d6db7ab8d.png)

#サーバーエクスプローラーに接続を追加
サーバーエクスプローラーからデータ接続を右クリックしてメニューから「接続の追加...」を選択します。

![5eaf807a-bb18-633b-bb43-34ae61e65795.png](https://qiita-image-store.s3.amazonaws.com/0/112075/9f8032ce-a1d8-5165-dc5e-3f39638bd9c3.png)

ダイアログが表示されるので次のように入力します。

データソース: Microsoft SQL Sever (SqlClient)
サーバー名: (localdb)\ProjectsV13
データベースファイルのアタッチ: 作成したLocalDBデータベースファイル(*.mdf)を選択します。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/330e24d0-3c81-2b3e-4e9f-dae6a6906f34.png)

サーバーエクスプローラーのデータ接続にデータベースが表示されます。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/2fea9668-c9f4-ce99-aadd-6ab833b3c5ef.png)

#プロジェクト作成
新しいプロジェクトから「Visual Basic」、「Windowsクラシックデスクトップ」の「Windowsフォームアプリケーション」を選択します。（.NET Framework 4.6.1）

![iii.png](https://qiita-image-store.s3.amazonaws.com/0/112075/ddd7c0da-3d1e-8f76-79e3-7d6ede9710cd.png)

#データセット作成
新しい項目の追加でデータセットを追加します。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/143dfbd9-dc46-c6aa-2d22-ba91043c0518.png)

サーバーエクスプローラーからテーブルをデータセットへドラッグ＆ドロップします。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/a33566f3-ef1c-ce8c-304f-5ee715be6920.png)

データベースをプロジェクトにコピーしてそこへ接続するように変更するか確認されるので「はい」を押します。
これによりデータベースがプロジェクトに組み込まれアプリケーションと一緒に配布されるようになります。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/6ba0983c-c66d-9dcd-8f4f-ebf591c5ef97.png)

データセットにテーブルへアクセスするTableAdapterが作成されます。
また、サーバーエクスプローラーのデータベースも接続先がプロジェクトのものに変更されます。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/d92e5eda-852a-d83c-76f4-b4d3931d8a03.png)

#テーブルをフォームに配置
データソースからデータセットのテーブルをフォームにドラッグ＆ドロップします。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/0a69b17e-cf03-4deb-b9a6-181e48667381.png)

グリッドがフォームに配置されるのでサイズや位置を調整します。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/204ac7fb-f3aa-b71a-97fc-6feb72366115.png)

#アプリケーション実行
デバッグを開始するとアプリケーションが実行され、グリッドにテーブルの内容が表示されます。

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/b8c3e3ef-0e4e-1ac7-40fa-9de09748e922.png)

#アプリケーション配布
ソリューションの以下フォルダのファイルを実行したいPCへコピーします。

```:Debugビルド
WindowsApp1\WindowsApp1\bin\Debug
```

```:Releaseビルド
WindowsApp1\WindowsApp1\bin\Release
```

![aaa.png](https://qiita-image-store.s3.amazonaws.com/0/112075/04202afb-122b-e46d-3886-9e42f6fe6ac2.png)

#配布先PCでアプリケーションを実行
配布先でアプリケーションを実行すると・・・エラーが！

![eee.png](https://qiita-image-store.s3.amazonaws.com/0/112075/b8fbb91e-3d4c-2f29-b389-129cb793e4b7.png)

配布先のPCにLocalDBがインストールされていないのが原因でした。
LocalDBをインストールしてアプリケーションを動作させるまでの手順は以下を参考にして下さい。

SQL Server 2016 Express LocalDBインストール手順
http://qiita.com/akabei/items/89537546ddca3b962e81