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 接続 みたいに検索したら沢山出てくると思いますのでそちらをご覧ください。 […]

C#ログイン画面作成 SQL Server - yonayona へ返信する コメントをキャンセル

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

関連記事

C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた

<目次> (1) C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた  (1-1) デリゲートとは?「関数へのポインタ」だけでは説明しきれない・・  (1-2) デリゲ …

Xamarin.FormsでHelloworldする手順+Buttonコントロール追加のサンプルコード紹介

<目次> (1) Xamarin.FormsでHelloworldする手順  (1-1) Xamarin.Formsプロジェクト構成の概要  (1-2) MainPage.xamlの修正  (1-3) …

ASP.NETでViewに値を渡す方法

  <目次> (1) ASP.NETでViewに値を渡す方法  (1-1) 方法1:アクションメソッドの引数に追加  (1-2) 方法2:ViewBagを使う方法  (1-3) 方法3:ビュ …

C#で「CS0518: 定義済みの型 ‘System.Range’は定義、またはインポートされていません」エラーが出た時の原因と対処

  <目次> (1) C#で「CS0518: 定義済みの型 ‘System.Range’は定義、またはインポートされていません」エラーが出た時の原因と対処  (1-1 …

C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介

  <目次> (1) C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介  (1-1) 概要   (1-1-1) スレッドのライフライクルについて   (1-1-2) ma …

  • English (United States)
  • 日本語
Top