C#でデータベース接続を始めよう!基本の流れを解説
生徒
「C#でデータベースに接続して、データを保存したり取り出したりする方法ってありますか?」
先生
「はい、C#では、ADO.NETという仕組みを使って、簡単にデータベースと接続できます。」
生徒
「データベースって何ですか?」
先生
「データベースは、たくさんのデータを整理して保存しておく場所のことです。例えば、本棚に本を整理して保管するように、データも整理して保存できます。」
生徒
「なるほど!具体的にどうやって接続するんですか?」
先生
「それでは、基本的な流れを見ていきましょう!」
1. データベース接続とは?
データベース接続とは、C#のプログラムからデータベースに繋げて、データの読み書きを行えるようにすることです。データベースは、顧客情報や商品情報など、たくさんのデータを保存しておく倉庫のようなものです。C#ではADO.NETという技術を使って、データベースとやり取りをします。
ADO.NETは、マイクロソフトが提供する、データベース操作のための仕組みです。この仕組みを使うことで、SQL Server、MySQL、PostgreSQLなど、さまざまな種類のデータベースに接続できます。
2. データベース接続の基本的な流れ
C#でデータベースに接続する流れは、次のようになります。まるで、図書館で本を借りる手順のようなイメージです。
データベース接続の4つのステップ
- 接続文字列の準備:データベースへの住所を用意する
- 接続の確立:データベースへの扉を開く
- コマンドの実行:データベースに指示を出す
- 接続の切断:データベースへの扉を閉じる
この流れを順番に守ることで、安全にデータベースとやり取りできます。
3. 接続文字列とは?
接続文字列(せつぞくもじれつ)は、データベースへの接続に必要な情報をまとめた文字列です。これは、手紙を送るときの宛先住所のようなものです。接続文字列には、データベースのサーバー名、データベース名、ユーザー名、パスワードなどの情報が含まれます。
SQL Serverに接続する場合の接続文字列の例を見てみましょう。
string connectionString = "Server=localhost;Database=MyDatabase;User Id=myuser;Password=mypassword;";
この接続文字列には、サーバーの場所、データベース名、ユーザー名、パスワードが書かれています。Serverはデータベースがあるコンピューターの場所、Databaseは使いたいデータベースの名前、User IdとPasswordはログイン情報です。
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. データを取得してみよう
データベースに接続できたら、次はデータを取得してみましょう。データの取得には、SqlCommandとSqlDataReaderを使います。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. データを追加してみよう
データベースに新しいデータを追加するには、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. 接続を安全に閉じる重要性
データベース接続は、使い終わったら必ず閉じる必要があります。これは、部屋から出るときに電気を消すようなものです。接続を閉じないと、データベースのリソースが無駄に使われ続け、他の人が接続できなくなる可能性があります。
C#では、using文を使うことで、自動的に接続を閉じることができます。using文は、処理が終わったら自動的に後片付けをしてくれる便利な仕組みです。エラーが発生しても、必ず接続を閉じてくれるので安心です。
注意点
データベース接続は、限りある資源です。接続を開きっぱなしにすると、パフォーマンスが低下したり、他のユーザーが接続できなくなったりします。必ずusing文を使って、適切に接続を管理しましょう。
8. よくあるエラーと対処法
データベース接続では、いくつかのエラーが発生することがあります。ここでは、よくあるエラーとその対処法を紹介します。
接続エラー
接続文字列が間違っていたり、データベースサーバーが起動していなかったりすると、接続エラーが発生します。エラーメッセージをよく読んで、接続文字列の内容を確認しましょう。特に、サーバー名、データベース名、ユーザー名、パスワードが正しいか確認してください。
タイムアウトエラー
データベースの処理に時間がかかりすぎると、タイムアウトエラーが発生します。接続文字列にConnection Timeoutを追加することで、待ち時間を調整できます。例えば、Connection Timeout=30;のように書きます。
SQLエラー
SQL文の書き方が間違っていると、SQLエラーが発生します。テーブル名やカラム名が正しいか、SQL文の文法が正しいかを確認しましょう。エラーメッセージには、どこが間違っているかのヒントが書かれています。