カテゴリ: C# 更新日: 2026/02/09

C#でデータベース接続を始めよう!基本の流れを解説

C#でデータベース接続を始めよう!基本の流れを解説
C#でデータベース接続を始めよう!基本の流れを解説

先生と生徒の会話形式で理解しよう

生徒

「C#でデータベースに接続して、データを保存したり取り出したりする方法ってありますか?」

先生

「はい、C#では、ADO.NETという仕組みを使って、簡単にデータベースと接続できます。」

生徒

「データベースって何ですか?」

先生

「データベースは、たくさんのデータを整理して保存しておく場所のことです。例えば、本棚に本を整理して保管するように、データも整理して保存できます。」

生徒

「なるほど!具体的にどうやって接続するんですか?」

先生

「それでは、基本的な流れを見ていきましょう!」

1. データベース接続とは?

1. データベース接続とは?
1. データベース接続とは?

データベース接続とは、C#のプログラムからデータベースに繋げて、データの読み書きを行えるようにすることです。データベースは、顧客情報や商品情報など、たくさんのデータを保存しておく倉庫のようなものです。C#ではADO.NETという技術を使って、データベースとやり取りをします。

ADO.NETは、マイクロソフトが提供する、データベース操作のための仕組みです。この仕組みを使うことで、SQL Server、MySQL、PostgreSQLなど、さまざまな種類のデータベースに接続できます。

2. データベース接続の基本的な流れ

2. データベース接続の基本的な流れ
2. データベース接続の基本的な流れ

C#でデータベースに接続する流れは、次のようになります。まるで、図書館で本を借りる手順のようなイメージです。

データベース接続の4つのステップ

  1. 接続文字列の準備:データベースへの住所を用意する
  2. 接続の確立:データベースへの扉を開く
  3. コマンドの実行:データベースに指示を出す
  4. 接続の切断:データベースへの扉を閉じる

この流れを順番に守ることで、安全にデータベースとやり取りできます。

3. 接続文字列とは?

3. 接続文字列とは?
3. 接続文字列とは?

接続文字列(せつぞくもじれつ)は、データベースへの接続に必要な情報をまとめた文字列です。これは、手紙を送るときの宛先住所のようなものです。接続文字列には、データベースのサーバー名、データベース名、ユーザー名、パスワードなどの情報が含まれます。

SQL Serverに接続する場合の接続文字列の例を見てみましょう。


string connectionString = "Server=localhost;Database=MyDatabase;User Id=myuser;Password=mypassword;";

この接続文字列には、サーバーの場所、データベース名、ユーザー名、パスワードが書かれています。Serverはデータベースがあるコンピューターの場所、Databaseは使いたいデータベースの名前、User IdPasswordはログイン情報です。

4. データベースに接続してみよう

4. データベースに接続してみよう
4. データベースに接続してみよう

それでは、実際にC#でデータベースに接続するプログラムを書いてみましょう。まず、System.Data.SqlClientという名前空間を使用します。名前空間とは、プログラムで使う道具箱のようなものです。


using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=localhost;Database=MyDatabase;Integrated Security=True;";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("データベースに接続しました!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("接続エラー: " + ex.Message);
            }
        }
        
        Console.WriteLine("接続を切断しました。");
    }
}

このプログラムでは、SqlConnectionというクラスを使ってデータベースに接続しています。using文を使うことで、接続を自動的に閉じることができます。これは、ドアを開けたら自動的に閉めてくれる仕組みのようなものです。

connection.Open()でデータベースへの扉を開き、try-catch文でエラーが起きたときの処理を書いています。エラー処理は、問題が起きたときに備える保険のようなものです。

実行結果


データベースに接続しました!
接続を切断しました。

5. データを取得してみよう

5. データを取得してみよう
5. データを取得してみよう

データベースに接続できたら、次はデータを取得してみましょう。データの取得には、SqlCommandSqlDataReaderを使います。SqlCommandはデータベースへの指示書、SqlDataReaderはデータを読み取る装置です。


using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=localhost;Database=MyDatabase;Integrated Security=True;";
        string query = "SELECT * FROM Users";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);
            
            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                
                while (reader.Read())
                {
                    Console.WriteLine($"ID: {reader["Id"]}, 名前: {reader["Name"]}");
                }
                
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("エラー: " + ex.Message);
            }
        }
    }
}

このプログラムでは、SELECT文を使ってデータベースからデータを取得しています。SELECT文は、データベースに対して「このデータを見せてください」とお願いする命令です。ExecuteReader()でデータを読み取り、whileループで一行ずつデータを処理しています。

実行結果


ID: 1, 名前: 田中太郎
ID: 2, 名前: 佐藤花子
ID: 3, 名前: 鈴木一郎

6. データを追加してみよう

6. データを追加してみよう
6. データを追加してみよう

データベースに新しいデータを追加するには、INSERT文を使います。これは、本棚に新しい本を追加するような操作です。


using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=localhost;Database=MyDatabase;Integrated Security=True;";
        string query = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
        
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(query, connection);
            command.Parameters.AddWithValue("@Name", "山田次郎");
            command.Parameters.AddWithValue("@Age", 25);
            
            try
            {
                connection.Open();
                int rowsAffected = command.ExecuteNonQuery();
                Console.WriteLine($"{rowsAffected}件のデータを追加しました。");
            }
            catch (Exception ex)
            {
                Console.WriteLine("エラー: " + ex.Message);
            }
        }
    }
}

このプログラムでは、Parameters.AddWithValueを使って、安全にデータを追加しています。@Name@Ageパラメータと呼ばれ、データを安全に渡すための仕組みです。これを使うことで、不正なデータの入力を防げます。

ExecuteNonQuery()は、データの追加や更新、削除などの操作を実行するメソッドです。戻り値は、影響を受けた行数を表します。

実行結果


1件のデータを追加しました。

7. 接続を安全に閉じる重要性

7. 接続を安全に閉じる重要性
7. 接続を安全に閉じる重要性

データベース接続は、使い終わったら必ず閉じる必要があります。これは、部屋から出るときに電気を消すようなものです。接続を閉じないと、データベースのリソースが無駄に使われ続け、他の人が接続できなくなる可能性があります。

C#では、using文を使うことで、自動的に接続を閉じることができます。using文は、処理が終わったら自動的に後片付けをしてくれる便利な仕組みです。エラーが発生しても、必ず接続を閉じてくれるので安心です。

注意点

データベース接続は、限りある資源です。接続を開きっぱなしにすると、パフォーマンスが低下したり、他のユーザーが接続できなくなったりします。必ずusing文を使って、適切に接続を管理しましょう。

8. よくあるエラーと対処法

8. よくあるエラーと対処法
8. よくあるエラーと対処法

データベース接続では、いくつかのエラーが発生することがあります。ここでは、よくあるエラーとその対処法を紹介します。

接続エラー

接続文字列が間違っていたり、データベースサーバーが起動していなかったりすると、接続エラーが発生します。エラーメッセージをよく読んで、接続文字列の内容を確認しましょう。特に、サーバー名、データベース名、ユーザー名、パスワードが正しいか確認してください。

タイムアウトエラー

データベースの処理に時間がかかりすぎると、タイムアウトエラーが発生します。接続文字列にConnection Timeoutを追加することで、待ち時間を調整できます。例えば、Connection Timeout=30;のように書きます。

SQLエラー

SQL文の書き方が間違っていると、SQLエラーが発生します。テーブル名やカラム名が正しいか、SQL文の文法が正しいかを確認しましょう。エラーメッセージには、どこが間違っているかのヒントが書かれています。

カテゴリの一覧へ
新着記事
New1
C#
C#でループの中に条件分岐を書く方法!入れ子制御構造の基本
New2
C#
C#のthrow文の基本!例外を自分で発生させる方法
New3
C#
C#のADO.NETの基礎!SqlConnectionとSqlCommandの使い方を初心者向けに徹底解説
New4
C#
C#の例外クラス階層を理解しよう!Exception・SystemExceptionの基本をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.3
Java&Spring記事人気No3
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.4
Java&Spring記事人気No4
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.5
Java&Spring記事人気No5
COBOL
COBOLのコンパイラと開発環境を徹底解説!初心者にもわかりやすい入門ガイド
No.6
Java&Spring記事人気No6
COBOL
COBOLの帳票レイアウトを美しく!可読性向上テクニックを徹底解説
No.7
Java&Spring記事人気No7
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.8
Java&Spring記事人気No8
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説