2016年5月29日日曜日

[SQL Server]SqlDataReaderを使ってデータを取得


・App.config


  
    
  


・プログラム
using System;
using System.Configuration;
using System.Data.SqlClient;

namespace SqlServerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            
            using(SqlConnection con = new SqlConnection(connectionString)){
                con.Open();

                using (SqlCommand command = con.CreateCommand())
                {
                    string sql = "SELECT TOP 10 [BusinessEntityID], [FirstName] " +
                                 "FROM [Person].[Person];";
                    command.CommandText = sql;

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            string[] data = new string[] { reader["BusinessEntityID"].ToString(), 
                                                          reader["FirstName"].ToString() };
                            Console.WriteLine(string.Join("\t", data));
                        }
                    }
                }
            }
        }
    }
}

[SQL Server]接続、切断

・ちょっと確認したい用途など、手っ取り早く行うなら接続文字列をハードコード。

using System.Data.SqlClient;

namespace SqlServerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Data Source=[ServerName];Initial Catalog=[DatabaseName];User Id=[UserId];Password=[Password];";
            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            con.Close();
        }
    }
}

[ServerName]は、Expressのデフォルトなら PC名\SQLEXPRESS
[DatabaseName]は、AdventureWorks2012を入れたのであれば AdventureWorks2012
あとは、接続用のUserIdやらパスワードを指定すればよいです。


・接続文字列を、App.configにまとめる。
□App.config


  
    
  


□プログラム
using System.Data.SqlClient;
using System.Configuration;

namespace SqlServerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            con.Close();
        }
    }
}

System.Data.Configurationは参照に追加する。
その上で、usingする。


開発用と本番環境があって簡単に使い分けたいのであれば
App.configに二つ作成して、呼び分けるのでもよいかもですね。
using System.Data.SqlClient;
using System.Configuration;

namespace SqlServerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string key = string.Empty;

#if DEBUG 
            key = "ConnectionStringDevelopment";
#else
            key = "ConnectionStringProduction";
#endif

            string connectionString = ConfigurationManager.ConnectionStrings[key].ConnectionString;
            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            con.Close();
        }
    }
}

2016年5月28日土曜日

[SQL Server]SQL Serverで遊ぶ前にサンプルデータベースを準備

ひとまず、SQL Server 2014 Expressをインストール
インストール手順等は、検索していれてくださいな。

せっかくいれても、データがないとつまらないので、サンプルデータベースを用意してみます。

方法 : サンプル データベースをインストールする


上記サイト(msdnのページ)で説明があります。
AdventureWorksを入れてみました。



「CodePlex Webサイト」に飛びます。



「AdventureWorks for SQL Server 2012」に飛びます



一番下の「AdventureWorks2012_Data.zip」をクリック
解凍すると中身はこんな感じ




これを SQL ServerのDataフォルダに配置。
(C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA)




データを追加します。
データベース→右クリック→アタッチ




追加をクリック




AdventureWorks2012_Data.mdfを選択→OK



特にエラーもでていないので、OK




これで追加されました。




これを使って遊んでみます。


スキーマについては、AdventureWorks2008 Schema で検索して見つかるものを参照するとよいと思います。
https://www.google.co.jp/search?q=adventureWorks2008&espv=2&biw=1163&bih=540&source=lnms&tbm=isch&sa=X&ved=0ahUKEwj6u6-akv7MAhVLm5QKHTWfBUwQ_AUIBigB#tbm=isch&q=adventureWorks2008+schema&imgrc=hCx_dwpvVqGmlM%3A

・2012用が見当たらない
・そもそも大本がどこかわからない

ということで画像検索で探してみてください。

SQL Serverメモ

[SQL Server]SQL Serverで遊ぶ前にサンプルデータベースを準備
[SQL Server]接続、切断

□SELECT
[SQL Server]SqlDataReaderを使ってデータを取得