C# で .mdf (SQL Server データベース ファイル) を 開く

0 件のコメント

Visual Studio の プロジェクト に追加された SQL Server データベース ファイル (mdf ファイル) を SqlConnection を用いて開いて利用する方法を見ていきます。 テーブル は サーバー エクスプローラー で 開いて GUI を使ってあらかじめ登録してあるものとします。 (サンプルコードでは Person テーブル が作られている前提の処理となっています。)

サンプルコード の ダウンロード

(※ SQL Server データベースの中身を見る or 操作するだけなら 黒猫 SQL Studio が個人的には好みです。)

サンプルコード(抜粋)

namespace DataBaseService.Controllers
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Data.SqlClient;
    using System.Data;

    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            var connectionString = string.Empty;
            connectionString += @"Data Source=.\SQLEXPRESS;";
            connectionString += @"AttachDbFilename=";
            connectionString += this.Server.MapPath("./App_Data/Database.mdf");
            connectionString += @";";
            connectionString += @"Integrated Security=true;";
            connectionString += @"User Instance=true;";

            DataTable dataTable = new DataTable();

            using (SqlConnection connection = new SqlConnection())
            {
                var query = "SELECT * from Person";
                using (SqlCommand cmd = new SqlCommand(query, connection))
                {
                    connection.ConnectionString = connectionString;
                    connection.Open();
                    
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dataTable);

                    connection.Close();
                }
            }

            return View();
        }

    }
}

説明

上記サンプルコードの 21行目 はデータベースファイルへのパスなので、環境により変化します。

connectionString がなかなかうまくいかず、いろいろと試して上記コードでなんとかうまく動きました。

ASP.NET MVC (C#)でアプリケーションを作成していて、スタブとして .mdf ファイル のデータベースが利用できると作業効率もあがるのではないか… そんな考えで、SQL Server データベース ファイル の利用方法をまとめてみました。

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!