C# データベース接続:SQL Server への接続方法 (例)
データベースからデータにアクセスすることは、プログラミング言語の重要な側面の 1 つです。どのプログラミング言語でも、データベースを操作できることは絶対に必要です。 C# も例外ではありません。
さまざまな種類のデータベースで動作します。 Oracle や Microsoft SQL Server などの最も一般的なデータベースで動作します。
また、MongoDB や MySQL などの新しい形式のデータベースでも動作します。
この C# SQL 接続チュートリアルでは、次のことを学びます-
- データベース接続の基礎
- C# をデータベースに接続する方法
- SqlDataReader を使用してデータにアクセスする
- C# データベースへの挿入
- 記録の更新
- 記録の削除
- コントロールをデータに接続する
- C# データグリッド ビュー
データベース接続の基礎
C# と .Net は、Oracle と Microsoft SQL Server が最も一般的なデータベースの大部分で動作します。しかし、どのデータベースでも、それらすべてを操作する背後にあるロジックはほとんど同じです。
この例では、Microsoft SQL Server をデータベースとして使用する方法を見ていきます。学習目的で、Microsoft SQL Server Express Edition をダウンロードして使用できます
データベースを操作する上で、すべてのデータベースに共通する概念は次のとおりです。
- データベース名またはデータ ソース – 最初の重要なパラメーターは、接続を確立する必要があるデータベース名です。各接続は、一度に 1 つのデータベースでのみ機能します。
- 資格 – 次に重要な側面は、データベースへの接続を確立するために使用する必要があるユーザー名とパスワードです。これにより、ユーザー名とパスワードがデータベースへの接続に必要な権限を持っていることが保証されます。
- オプションのパラメータ – データベースの種類ごとに、オプションのパラメーターを指定して、.net がデータベースへの接続を処理する方法に関する詳細情報を提供できます。たとえば、接続がアクティブである期間のパラメータを指定できます。特定の期間操作が実行されない場合、パラメーターは接続を閉じる必要があるかどうかを決定します。
各操作の理論を確認したので、次のセクションに進んで、C# でデータベース操作を実行する方法を見てみましょう。
C# の SQL コマンド
C# の SqlCommand ユーザーがコマンドをクエリしてデータベースに送信できるようにします。 SQL コマンドは、SQL 接続オブジェクトによって指定されます。 2 つのメソッドが使用されます。クエリの結果には ExecuteReader メソッドが使用され、挿入、更新、および削除コマンドには ExecuteNonQuery が使用されます。これは、さまざまなコマンドに最適な方法です。
C# をデータベースに接続する方法
次に、データベースへの接続を作成するために保持する必要があるコードを見てみましょう。この例では、Demodb という名前のデータベースに接続します。データベースへの接続に使用される認証情報は以下のとおりです
- ユーザー名 – sa
- パスワード – demo123
データベースを操作する単純な Windows フォーム アプリケーションが表示されます。データベースへの接続に使用される「接続」というシンプルなボタンがあります。
それでは、これを達成するために以下の手順に従いましょう
ステップ 1) 最初の手順では、Visual Studio で新しいプロジェクトを作成します。 Visual Studio を起動したら、メニュー オプション [新規] → [プロジェクト] を選択する必要があります。
ステップ 2) 次の手順では、プロジェクトの種類を Windows フォーム アプリケーションとして選択します。ここでは、プロジェクトの名前と場所についても言及する必要があります。
<オール>
ステップ 3) 次に、ツールボックスから Windows フォームにボタンを追加します。 Button の text プロパティを Connect として配置します。こんな感じになります
ステップ 4) フォームをダブルクリックして、ボタン クリック イベントのコードにイベント ハンドラーを追加します。イベント ハンドラーで、以下のコードを追加します。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DemoApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string connetionString; SqlConnection cnn; connetionString = @"Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demol23"; cnn = new SqlConnection(connetionString); cnn.Open(); MessageBox.Show("Connection Open !"); cnn.Close(); } } }
コードの説明:-
<オール>- データ ソース – これは、データベースが存在するサーバーの名前です。私たちの場合、それは WIN-50GP30FGO75 というマシン上にあります。
- 初期カタログは、データベースの名前を指定するために使用されます
- UserID と Password は、データベースへの接続に必要な認証情報です。
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。フォームが表示されたら、[接続] ボタンをクリックします。
出力:-
「接続」ボタンをクリックすると、出力から、データベース接続が確立されたことがわかります。したがって、メッセージ ボックスが表示されました。
SqlDataReader を使用してデータにアクセス
C# を使用してデータにアクセスする方法を紹介するために、データベースに次のアーティファクトがあると仮定します。
<オール>フォームのコードを変更して、このデータを照会し、メッセージボックスを介して情報を表示できるようにしましょう。以下に入力するすべてのコードは、前のセクションでデータ接続用に記述されたコードの続きであることに注意してください。
ステップ 1) ユーザーが理解しやすいように、コードを 2 つの部分に分割しましょう。
- 最初に、データベースからデータを読み取るために使用される「select」ステートメントを作成します。
- 次に、データベースに対して「select」ステートメントを実行し、それに応じてテーブルのすべての行をフェッチします。
コードの説明:-
<オール>- SQLCommand – 「SQLCommand」は C# 内で定義されたクラスです。このクラスは、データベースへの読み取りおよび書き込み操作を実行するために使用されます。したがって、最初のステップは、このクラスの変数型を作成することです。この変数は、データベースからデータを読み取る後続のステップで使用されます。
- DataReader オブジェクトは、SQL クエリで指定されたすべてのデータを取得するために使用されます。次に、データ リーダーを使用して、テーブルのすべての行を 1 つずつ読み取ることができます。
- 次に、2 つの文字列変数を定義します。1 つは、SQL コマンド文字列を保持する「SQL」です。次は、すべてのテーブル値を含む「出力」です。
ステップ 2) 最後のステップでは、出力をユーザーに表示し、データベース操作に関連するすべてのオブジェクトを閉じます。
コードの説明:-
<オール>上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。フォームが表示されたら、[接続] ボタンをクリックします。
出力:-
出力から、プログラムがデータベースから値を取得できたことを明確に確認できます。データはメッセージ ボックスに表示されます。
データベースへの C# の挿入
データへのアクセスと同様に、C# にはデータベースにレコードを挿入する機能もあります。データベースにレコードを挿入する方法を紹介するために、上で使用したのと同じテーブル構造を取り上げましょう。
TutorialIDTutorialName1C#2ASP.Net次の行をテーブルに挿入できるように、フォームのコードを変更しましょう
TutorialIDTutorialName3VB.Netそれでは、次のコードをプログラムに追加しましょう。以下のコード スニペットは、データベースに既存のレコードを挿入するために使用されます。
コードの説明:-
<オール>- SQLCommand – このデータ型は、データベースに対して SQL 操作を実行するために使用されるオブジェクトを定義するために使用されます。このオブジェクトは、SQL Server データベースに対して実行される SQL コマンドを保持します。
- DataAdapter オブジェクトは、挿入、削除、更新コマンドなどの特定の SQL 操作を実行するために使用されます。
- 次に、SQL コマンド文字列を保持する「SQL」という文字列変数を定義します。
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。フォームが表示されたら、[接続] ボタンをクリックします。
出力:-
SQL Server Express に移動して demotb テーブルの行を確認すると、以下に示すように行が挿入されていることがわかります
C# 更新データベース
データへのアクセスと同様に、C# にはデータベースから既存のレコードを更新する機能もあります。レコードをデータベースに更新する方法を紹介するために、上で使用したのと同じテーブル構造を取り上げましょう。
TutorialIDTutorialName1C#2ASP.Net3VB.Net次の行を更新できるように、フォームのコードを変更しましょう。古い行の値は、TutorialID が「3」で、Tutorial Name が「VB.Net」です。これを「VB.Net complete」に更新しますが、チュートリアル ID の行の値は同じままです。
古い行
TutorialIDTutorialName3VB.Net新しい行
TutorialIDTutorialName3VB.Net 完了それでは、次のコードをプログラムに追加しましょう。以下のコード スニペットは、データベース内の既存のレコードを更新するために使用されます。
C# SqlCommand の例とコードの説明:-
<オール>- SQLCommand – このデータ型は、データベースに対して SQL 操作を実行するために使用されるオブジェクトを定義するために使用されます。このオブジェクトは、SQL Server データベースに対して実行される SQL コマンドを保持します。
- dataadapter オブジェクトは、挿入、削除、更新コマンドなどの特定の SQL 操作を実行するために使用されます。
- 次に、SQL コマンド文字列を保持する SQL である文字列変数を定義します。
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。フォームが表示されたら、[接続] ボタンをクリックします。
出力:-
実際に SQL Server Express にアクセスして demotb テーブルの行を確認すると、次のように行が正常に更新されていることがわかります。
記録の削除
データへのアクセスと同様に、C# にはデータベースから既存のレコードを削除する機能もあります。データベースからレコードを削除する方法を紹介するために、上で使用したものと同じテーブル構造を使用してみましょう。
TutorialIDTutorialName1C#2ASP.Net3VB.Net完了次の行を削除できるように、フォームのコードを変更しましょう
TutorialIDTutorialName3VB.Net 完了それでは、次のコードをプログラムに追加しましょう。以下のコード スニペットは、データベース内の既存のレコードを削除するために使用されます。
コードの説明:-
<オール>上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。フォームが表示されたら、[接続] ボタンをクリックします。
出力:-
実際に SQL Server Express にアクセスして demotb テーブルの行を確認すると、次のように行が正常に削除されていることがわかります。
コントロールをデータに接続する
前のセクションでは、SQLCommand や SQLReader などの C# コマンドを使用してデータベースからデータをフェッチする方法を見てきました。また、テーブルの各行を読み取り、メッセージ ボックスを使用してテーブルの内容をユーザーに表示する方法についても説明しました。
しかし、明らかに、ユーザーはメッセージ ボックス経由で送信されたデータを見たくないし、データを表示するためのより優れたコントロールを望んでいます。以下のデータ構造をテーブルに取りましょう
TutorialIDTutorialName1C#2ASP.Net3VB.Net完了上記のデータ構造から、ユーザーは理想的には、TutorialID と Tutorial Name がテキスト ボックスに表示されることを望んでいます。次に、テーブル内の次のレコードまたは前のレコードに移動できるボタン コントロールが必要になる場合があります。これには、開発者側で少し追加のコーディングが必要になります。
幸いなことに、C# では、コントロールをデータにバインドできるようにすることで、追加のコーディング作業を減らすことができます。これが意味することは、C# はテーブルの特定のフィールドに従ってテキスト ボックスの値を自動的に設定できるということです。
したがって、Windows フォームには 2 つのテキスト ボックスを含めることができます。次に、1 つのテキスト ボックスを TutorialID フィールドにリンクし、別のテキスト ボックスを TutorialName フィールドにリンクします。このリンクは Visual Studio デザイナー自体で行われるため、追加のコードを記述する必要はありません。
Visual Studio は、リンクが機能することを確認するためのコードを作成します。アプリケーションを実行すると、テキスト ボックス コントロールが自動的にデータベースに接続し、データを取得してテキスト ボックス コントロールに表示します。これを実現するために開発者側でコーディングを行う必要はありません。
コントロールのバインドを実現する方法のコード例を見てみましょう。
この例では、Windows フォームに 2 つのテキスト ボックスを作成します。これらは、それぞれチュートリアル ID とチュートリアル名を表します。それに応じて、データベースのチュートリアル ID およびチュートリアル名フィールドにバインドされます。
これを実現するには、以下の手順に従いましょう。
ステップ 1) 基本的なフォームを構築します。フォームで、ラベルとテキストボックスの 2 つのコンポーネントをドラッグ アンド ドロップします。次に、次のサブステップを実行します
<オール>上記の手順を実行すると、フォームは次のようになります。
ステップ 2) 次のステップは、バインディング Navigator をフォームに追加することです。バインディング Navigator コントロールは、テーブルの各行を自動的にナビゲートできます。バインディング ナビゲーターを追加するには、ツールボックスに移動してフォームにドラッグするだけです。
ステップ 3) 次のステップは、バインディングをデータベースに追加することです。これは、いずれかの Textbox コントロールに移動し、DataBindings->Text プロパティをクリックすることで実行できます。 Binding Navigator は、アプリケーションからデータベースへのリンクを確立するために使用されます。
この手順を実行すると、アプリケーションがデータベースにリンクされていることを確認するために、必要なコードが Visual Studio によって自動的にアプリケーションに追加されます。通常、Visual Studio のデータベースはプロジェクト データ ソースと呼ばれます。したがって、アプリケーションとデータベース間の接続を確実に確立するための最初のステップは、プロジェクト データ ソースを作成することです。
次の画面が表示されます。 「プロジェクト データ ソースの追加」リンクをクリックします。プロジェクト データ ソースをクリックすると、ウィザードが表示されます。これにより、データベース接続を定義できます。
ステップ 4) [プロジェクト データ ソースの追加] リンクをクリックすると、demotb データベースへの接続を作成するために使用されるウィザードが表示されます。次の手順では、ウィザードの各手順で何を構成する必要があるかを詳しく示しています。
<オール>
- 次の画面では、データベースへの接続文字列の作成を開始する必要があります。アプリケーションがデータベースへの接続を確立するには、接続文字列が必要です。サーバー名、データベース名、ドライバー名などのパラメーターが含まれています。 <オール>
- [新しい接続] ボタンをクリックします
- データ ソースとして Microsoft SQL Server を選択
- [続行] ボタンをクリックします。
- 次に、データベースに接続するための認証情報を追加する必要があります <オール>
- SQL Server が存在するサーバー名を選択してください
- データベースに接続するためのユーザー ID とパスワードを入力してください
- データベースを demotb として選択
- [OK] ボタンをクリックします。
- この画面では、前の画面で行ったすべての設定を確認します。 <オール>
- オプション「はい」を選択して、機密データを接続文字列に含めます
- [次へ] ボタンをクリックします。
- 次の画面で、[次へ] ボタンをクリックして、接続文字列の作成を確認します
- このステップでは、
[完了] ボタンをクリックすると、Visual Studio は、アプリケーションがテーブル Demotb のすべての行をクエリできることを確認します。
ステップ 5) データ ソースが定義されたので、TutorialID と TutorialName テキスト ボックスを demotb テーブルに接続する必要があります。 TutorialID または TutorialName テキストボックスの Text プロパティをクリックすると、Demotb へのバインド ソースが利用可能であることがわかります。
最初のテキスト ボックスでは、チュートリアル ID を選択します。 2 番目のテキスト ボックスに対してこの手順を繰り返し、TutorialName としてフィールドを選択します。以下の手順は、各コントロールに移動し、それに応じてバインディングを変更する方法を示しています。
<オール>
- [プロパティ] ウィンドウに、TutorialID テキストボックスのプロパティが表示されます。テキスト プロパティに移動し、下矢印ボタンをクリックします。
- 下矢印ボタンをクリックすると、demotbBinding Source オプションが表示されます。この下に、TutorialName と TutorialID のオプションが表示されます。チュートリアル ID を選択してください。
上記の 3 つの手順をチュートリアル名テキスト ボックスに対して繰り返します。
<オール>ステップ 6) 次に、BindingNavigator の Binding Source プロパティを変更して、Demotb データ ソースを指すようにする必要があります。これを行う理由は、Binding Navigator も参照する必要があるテーブルを認識する必要があるためです。
Binding Navigator は、テーブル内の次または前のレコードを選択するために使用されます。したがって、データ ソースがプロジェクト全体とテキスト ボックス コントロールに追加されたとしても、バインディング ナビゲーターにもデータ ソースへのリンクがあることを確認する必要があります。これを行うには、Binding ナビゲーター オブジェクトをクリックし、Binding Source プロパティに移動して、利用可能なものを選択する必要があります
次に、[プロパティ] ウィンドウに移動して、[バインディング ソース] プロパティを変更できるようにする必要があります。
上記のすべてのステップが正常に実行されると、以下の出力が得られます。
出力:-
プロジェクトが起動されると、テキスト ボックスがテーブルから自動的に値を取得することがわかります。
ナビゲーターの [次へ] ボタンをクリックすると、テーブル内の次のレコードに自動的に移動します。そして、次のレコードの値がテキスト ボックスに自動的に入力されます
C# DataGridView
データ グリッドは、テーブルのデータをグリッドのような形式で表示するために使用されます。ユーザーがテーブル データを表示する場合、通常、すべてのテーブル行を一度に表示することを好みます。これは、フォームのグリッドにデータを表示できれば実現できます。
C# と Visual Studio には組み込みのデータ グリッドがあり、これを使用してデータを表示できます。この例を見てみましょう。この例では、demotb テーブルからのチュートリアル ID とチュートリアル名の値を表示するために使用されるデータ グリッドがあります。
ステップ 1) Drag the DataGridView control from the toolbox to the Form in Visual Studio. The DataGridView control is used in Visual Studio to display the rows of a table in a grid-like format.
ステップ 2) In the next step, we need to connect our data grid to the database. In the last section, we had created a project data source. Let’s use the same data source in our example.
<オール>
If all the above steps are executed as shown, you will get the below-mentioned output.
出力:-
From the output, you can see that the grid was populated by the values from the database.
まとめ
- C# SQL can work with databases such as Oracle and Microsoft SQL Server.
- This C# database tutorial has all the commands which are required to work with databases. This involves establishing a connection to the database. You can perform operations such as select, update, insert and delete using the commands in C#.
- The DataReader object in C# is used to hold all the data returned by the database. The While loop in C# can be used to read the data rows one at a time.
- The data adapter object is used to perform SQL operations such as insert, delete, and update against the database.
- C# can bind controls to the various fields in a table. They are bound by defining a data source in C#. The data source is used to pull the data from the database and populate them in the controls.
- The binding navigator is used to automatically navigate through the rows in a table.
- The data grid in C# can connect to the database and display all the values from the table in a grid-like format.
C言語
- 難読化されたVPNサーバーとは何ですか?どのように機能しますか
- 3ドルのWiFiデバイスに安全な組み込みWebサーバーをインストールする方法
- レゴマインドストームNXT超音波センサーをラズベリーパイに接続する方法
- C の文字列:変数の宣言、初期化、印刷、例の方法
- C ライブラリの realloc() 関数:使い方は?構文と例
- C ライブラリの free() 関数:使い方は?例で学ぶ
- Java の String Length() メソッド:例で見つける方法
- Java BufferedReader:例を使用して Java でファイルを読み取る方法
- 内陸港が米国のサプライチェーンをより良く接続する方法
- サーバーの自動化がどのようにFANGに到達したか
- Haas CNC を PC およびラップトップに接続する方法