Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C#

C#からDB接続でSQLServerに接続してSELECT文を実行する方法

投稿日:2020年11月15日 更新日:

<目次>

(1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~
 (1-1) 構文(DB接続)
 (1-2) 構文(SELECT文発行)
 (1-3) サンプルプログラム
 (1-4) サンプルプログラム実行動画

(1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~

C#プログラムからデータベースに接続する方法について、SQLServerへの接続を例にご紹介します。

(1-1) 構文(DB接続)

(構文)

connectionString = @"Data Source=[データソース名];Initial Catalog=[初期接続DB名];User ID=[ユーザーID];Password=[パスワード];
SqlConnection cnn = new SqlConnection(connectionString);
cnn.Open();

(構文説明)
・まずはDBへの接続をするためにSqlConnectionクラスのインスタンスを生成します(↓この部分)。

SqlConnection cnn = new SqlConnection(connectionString);

・SqlConnectionのコンストラクタ引数には「接続情報」の値を与えますが、主に次に示す要素をセミコロン「;」で接続した文字列(String型)として与えます(↓この部分)。

connectionString = @"Data Source=[データソース名];Initial Catalog=[初期接続DB名];User ID=[ユーザーID];Password=[パスワード];

・そしてOpen()メソッドにより接続の確立を行います。この時にSqlConnectionの引数で指定した接続情報を用いて接続を行います(↓この部分)。

cnn.Open();

目次にもどる

(1-2) 構文(SELECT文発行)

(構文)

SqlCommand command = new SqlCommand("[SQLクエリ]", conn);
using (SqlDataReader reader = command.ExecuteReader())
{
  while (reader.Read())
  {
    Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
  }
}

(構文説明)
・まずはSqlCommandクラスのインスタンスを作ります。このSqlCommandクラスはSQLServerに対して実行する「Transact-SQL」や「ストアドプロシージャ」を表します(↓この部分)。

SqlCommand command = new SqlCommand("[SQLクエリ]", conn);

・次にusingステートメントを用いて「SqlDataReader」のインスタンスを作り使用します。「SqlDataReader」はSQLの結果の行を読むために使用するクラスです(↓この部分)。

using (SqlDataReader reader = command.ExecuteReader())
{
  [処理]
}

・最後にusingステートメントの中身で、SQLを読む処理を記述します。while文で最後の行に到達するまでRead()メソッドで読み込みを繰り返します。

while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}

目次にもどる

(1-3) サンプルプログラム

上記のDB接続の構文とSELECT文発行の構文とを組み合わせて、DB接続~SQL実行までを行うサンプルプログラムをご紹介します。

(サンプルプログラム)

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RP_IT0171_ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string dataSource, initCatalog, userId, passWord, connectionString;
            dataSource = "[HostName/IP Address]";
            initCatalog = "[DatabaseName]";
            userId = "[UserName]";
            passWord = "[Password]";
            connectionString = @"Data Source=" + dataSource + ";Initial Catalog=" + initCatalog + ";User ID=" + userId + ";Password=" + passWord;
            string query_s = "SELECT * FROM dbo.access_counter";

            //SqlConnectionクラスのインスタンスをusing内で使用して、接続の確立
            //(usingを抜けたら、自動で切断する)
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                //接続を確立
                conn.Open();
                
                //SELECT文を作成
                SqlCommand command_s = new SqlCommand(query_s, conn);

                //SqlDataReaderクラスのインスタンスをusing内で使用して、レコードを読み込み
                //(usingを抜けたら、SqlDataReaderを破棄)
                using (SqlDataReader reader = command_s.ExecuteReader())
                {
                    //最終行に到達するまで繰り返し読み込み
                    while (reader.Read())
                    {
                        //コンソールに1列目、2列目、3列目の値を表示
                        Console.WriteLine(String.Format("{0}, {1}, {2}", reader[0], reader[1], reader[2]));
                    }
                }
                conn.Close();
            }
        }
    }
}

目次にもどる

(1-4) サンプルプログラム実行動画

(実行動画)
まずは取得予定のテーブルのレコードをSSMSで確認し、VisualStudioからプログラムを実行して、コンソールにその値が表示される事を確認しています。

(補足)
今回のプログラムは「コンソールアプリ (.NET Framework)」を使って作成しました。
(図132)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C#

執筆者:


  1. […] 書いてるコードの記述がわからない際は、C# Sqlserver 接続 みたいに検索したら沢山出てくると思いますのでそちらをご覧ください。 […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ASP.NET MVCのRouteConfigを追加する方法を2つご紹介

  <目次> (1) ASP.NET MVCのRouteConfigを追加する方法を2つご紹介  (1-1) やりたい事の整理  (1-2) 方法1:通常のルーティング  (1-3) 方法2 …

C#のintに?「はてな」(question mark)が付いている意味について

<目次> (1) C#のintに?「はてな」(question mark)が付いている意味について  (1-1) 「int?」とは?  (1-2) 「int?」の型について  (1-3) 「int?」 …

Visual Studioのプロジェクトを別ソリューションに移動する手順

  <目次> (1) Visual Studioのプロジェクトを別ソリューションに移動する手順  (1-1) プロジェクトを別ソリューションに移動する手順  (1-2) 参考①:「.cspr …

.NETで「SystemInvalidOperationException」例外(ZombieCheck、Rollback)の調査記録

<目次> (1) .NETで「SystemInvalidOperationException」例外(ZombieCheck、Rollback)の調査記録  (1-1) エラーメッセージ  (1-2) …

C#でファイルを1行ずつ読み込み処理を行うサンプルプログラム

<目次> (1) C#でファイルを読み込み処理を行うサンプルプログラム  (1-1) 構文  (1-2) サンプルプログラム  (1-3) サンプルプログラムの補足 (1) C#でファイルを読み込み処 …

  • English (United States)
  • 日本語
Top