C#データベース接続チュートリアル:SQL Server接続とCRUD操作の実践
データベース操作はC#開発者にとって必須スキルです。このガイドでは、Microsoft SQL Serverへの接続、クエリ実行、Windows Formsコントロールへのデータバインディング方法を解説します。
データベース接続の基礎
Oracle、MySQL、MongoDB、Microsoft SQL Serverのいずれを使用する場合も、接続、クエリ、挿入、更新、削除のプロセスは一貫しています。このチュートリアルでは無料のSQL Server Expressエディションを使用してSQL Serverに焦点を当てます。
- 接続文字列 - サーバー名、データベース名、資格情報を含む。
- 資格情報 - 必要な特権を持つユーザー名とパスワード。
- オプションパラメータ - 接続タイムアウト、暗号化など。
C#でのSQLコマンド
SqlCommandクラスがSQLステートメントをデータベースに送信。SELECTクエリにはExecuteReader、INSERT/UPDATE/DELETEにはExecuteNonQueryを使用。
C#からSQL Serverへの接続
以下は、資格情報sa / demo123を使用してDemodbというデータベースに接続する最小限のWindows Forms例です。ボタンクリックイベントで接続を開き、メッセージを表示、閉じます。
ステップ1: Visual StudioでWindows Formsプロジェクトを作成。ステップ2: btnConnectという名前のButtonを追加、テキストを"Connect"に設定。ステップ3: 以下のイベントハンドラを追加:
using System;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DemoApplication1 {
public partial class Form1 : Form {
public Form1() => InitializeComponent();
private void btnConnect_Click(object sender, EventArgs e) {
string connectionString = "Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demo123";
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
MessageBox.Show("Connection Opened!");
conn.Close();
}
}
}
}
アプリケーション実行後、ボタンをクリックすると確認メッセージが表示されます。
SqlDataReaderによるデータ読み取り
demotbテーブルがTutorialIDとTutorialNameカラムを持つと仮定:
| TutorialID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.NET |
以下のコードで行を取得・表示:
string sql = "SELECT TutorialID, TutorialName FROM demotb";
using (SqlCommand cmd = new SqlCommand(sql, conn))
using (SqlDataReader reader = cmd.ExecuteReader()) {
string output = "";
while (reader.Read()) {
output += $"ID: {reader[\"TutorialID\"]}, Name: {reader[\"TutorialName\"]}\n";
}
MessageBox.Show(output);
}
レコードの挿入
新しいチュートリアル(ID 3、Name VB.NET)を追加:
string insertSql = "INSERT INTO demotb (TutorialID, TutorialName) VALUES (3, 'VB.NET')";
using (SqlCommand cmd = new SqlCommand(insertSql, conn)) {
cmd.ExecuteNonQuery();
}
レコードの更新
ID 3のチュートリアルを"VB.NET Complete"に更新:
string updateSql = "UPDATE demotb SET TutorialName = 'VB.NET Complete' WHERE TutorialID = 3";
using (SqlCommand cmd = new SqlCommand(updateSql, conn)) {
cmd.ExecuteNonQuery();
}
レコードの削除
ID 3のレコードを削除:
string deleteSql = "DELETE FROM demotb WHERE TutorialID = 3";
using (SqlCommand cmd = new SqlCommand(deleteSql, conn)) {
cmd.ExecuteNonQuery();
}
コントロールへのデータバインディング
Windows Formsはデータバインディングを提供し、手動UI更新を不要にします。2つのTextBoxコントロールをフォームにドラッグし、txtIDとtxtNameと命名、BindingNavigatorを追加。
データソースウィザードでdemotbのプロジェクトデータソースを作成。その後:
txtIDを選択、プロパティウィンドウでDataBindings → Textをクリック、demotbBindingSource - TutorialIDにバインド。txtNameも同様にTutorialNameにバインド。BindingNavigatorのBindingSourceプロパティをdemotbBindingSourceに設定。
フォーム実行時、テキストボックスに最初のレコードが表示され、ナビゲーターで行を自動移動できます。
DataGridViewでのデータ表示
DataGridViewをフォームにドラッグ。プロパティでDataSourceをdemotbBindingSourceに設定。グリッドにテーブルの全行が自動表示されます。
まとめ
SqlConnectionと適切な接続文字列でSQL Serverに接続。SqlCommandとExecuteNonQueryでCRUD操作を実行。SqlDataReaderでデータ読み取り、whileループで行処理。- UIコントロールを
BindingSourceにバインドし、自動データ表示とナビゲーションを実現。 DataGridViewで表形式データを即座に表示。
C言語
- Lego Mindstorms NXT超音波センサーをRaspberry Piに直接接続する
- サーバー自動化:デスクトップマクロからFANGプラットフォームへ
- 米国サプライチェーン強化:内陸港の戦略的役割
- ハース CNC を PC またはノートパソコンに接続:ステップバイステップガイド
- 難読化VPNサーバーの理解:仕組みと重要性
- 3ドルのESP8266でTLS対応Webサーバーを30分以内に導入
- C 言語の文字列をマスター: 宣言、入力、出力、ライブラリ関数
- C言語のrealloc()活用ガイド:構文、ベストプラクティス、実例
- C言語free()関数完全マスター:実践ガイドと例
- Java String.length()メソッド:文字列サイズ取得の実例解説
- Java BufferedReader でファイル読み込み:実践ガイドと例