挿入、更新、削除:ASP.NETデータベース接続
⚡ スマートサマリー
ASP.NET は SQL Server などのデータベースに接続します。 Oracle ADO.NET を介して、SqlConnection、SqlCommand、SqlDataReader、および SqlDataAdapter クラスを使用して接続を開き、保存されているレコードに対して選択、挿入、更新、および削除操作を実行します。
データベースからデータにアクセスすることは、あらゆるプログラミング言語にとって重要な要素です。どのプログラミング言語も、データベースを操作できる機能を備えている必要があります。
ASP.NET は、さまざまな種類のデータベースと連携できます。最も一般的なデータベースである次のようなデータベースと連携できます。 Oracle (NAIST) と Microsoft SQL サーバー。
また、次のような新しい形式のデータベースを操作する機能もあります。 MongoDB (NAIST) と MySQL.
データベース接続の基礎
ASP.NETは、ほとんどのデータベースと連携する機能を備えています。最も一般的なデータベースは、 Oracle (NAIST) と Microsoft SQL Server。ただし、どのデータベースでも、その操作の背後にあるロジックはほとんど同じです。
この例では、 Microsoft SQL Server 私たちのデータベースとして。学習目的で、ダウンロードして使用できます。 Microsoft SQL Server Express Edition。これは、によって提供される無料のデータベースソフトウェアです。 Microsoft.
データベースを扱う際に、以下の概念はすべてのデータベースに共通しています。
- 接続 – データベース内のデータを操作するには、最初の明らかなステップは接続です。 データベースへの接続は通常、以下のパラメータで構成されます。
- データベース名またはデータソース – 最初の重要なパラメータはデータベース名です。 各接続は、一度に XNUMX つのデータベースのみを操作できます。
- Credentials 次に重要なのは、ユーザー名とパスワードです。これらはデータベースへの接続を確立するために使用されます。
- オプションのパラメーター – .NET がデータベースへの接続をどのように処理するかについて、オプションのパラメーターを指定できます。たとえば、接続をアクティブな状態に保つ時間を指定するパラメーターを指定できます。
- データベースからのデータの選択 接続が確立されると、データベースからデータが取得されます。ASP.NETは、データベースに対してSQL SELECTコマンドを実行する機能を備えています。SQLステートメントを使用すると、データベース内の特定のテーブルからデータを取得できます。
- データベースへのデータの挿入 ASP.NETは、データベースにレコードを挿入するために使用されます。データベースに挿入する必要のある各行の値は、ASP.NETで指定されます。
- データベースへのデータの更新 ASP.NET は、データベース内の既存レコードを更新するためにも使用できます。データベースに更新する必要のある各行に対して、ASP.NET で新しい値を指定できます。
- データベースからのデータの削除 ASP.NET は、データベースからレコードを削除するためにも使用できます。このコードは、データベースから特定の行を削除するように記述されています。
各操作の理論的な部分を見てきたので、次にASP.NETでデータベース操作を実行する方法を見ていきましょう。
ASP.NETデータベース接続
それでは、データベースへの接続を確立するために必要なコードを見ていきましょう。この例では、Demodbという名前のデータベースに接続します。データベースへの接続に使用する認証情報は以下のとおりです。
- ユーザー名 – sa
- パスワード – デモ123
それでは、前のセクションで作成した既存のWebアプリケーションを使って作業を進めていきましょう。
- データベース操作の追加を開始します。
- この例では、シンプルな接続を確立する方法を見ていきます。この接続はDemodbデータベースに対して行われます。これは、ページが最初に起動されたときに実行されます。
- 接続が確立されると、メッセージがユーザーに送信されます。 接続が確立されたことを示すメッセージが表示されます。
これを実現するために、以下の手順に従ってください。
ステップ1) まず、Webアプリケーション(DemoApplication)がVisual Studioで開いていることを確認してください。 Double-demo.aspx.cs ファイルをクリックして、データベース接続用のコードを入力してください。
ステップ2) データベースへの接続を確立するために使用される以下のコードを追加します。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string connectionString; SqlConnection cnn; connectionString = @"Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demo123"; cnn = new SqlConnection(connectionString); cnn.Open(); Response.Write("Connection Made"); cnn.Close(); } } }
Code 説明:-
- 最初のステップは変数を作成することです。これらの変数は、接続文字列とSQL Serverデータベースへの接続を作成するために使用されます。
- 次のステップは、実際に接続文字列を作成することです。接続文字列は以下の部分で構成されます。
- データソース – これは、データベースが格納されているサーバーの名前です。この例では、WIN-50GP30FGO75 というマシンに格納されています。
- 初期カタログは、データベースの名前を指定するために使用されます。
- ユーザーIDとパスワードは、データベースに接続するために必要な認証情報です。
- 次に、接続文字列を変数cnnに代入します。
- 変数 cnn の型は SqlConnection です。 これはデータベースへの接続を確立するために使用されます。
- SqlConnectionは、データベースへの接続を作成するために使用されるASP.NETのクラスです。
- このクラスを使用するには、まずこのクラスのオブジェクトを作成する必要があります。そこで、ここではSqlConnection型のcnnという変数を作成します。
- 次に、cnn変数のOpenメソッドを使用してデータベースへの接続を開きます。接続が確立されたことをユーザーに知らせるメッセージを表示します。これはResponse.Writeメソッドを使用して行います。その後、データベースへの接続を閉じます。
上記のコードが設定され、プロジェクトが実行される場合 Visual Studioのすると、以下の出力が表示されます。フォームが表示されたら、「接続」ボタンをクリックしてください。
出力:-
ブラウザに表示される出力メッセージには、データベースへの接続が行われたことが示されます。
SqlDataReader を使用した ASP.NET 読み取りデータベース
ASP.NETを使用してアクセスされるデータを示すために、データベースに以下のアーティファクトが存在すると仮定します。
- demotbという名前のテーブル。このテーブルには、さまざまなチュートリアルのIDと名前が格納されます。
- テーブルには2つの列があり、1つはTutorialID、もう1つはTutorialNameという名前になります。
- 現時点では、以下に示すように、テーブルには XNUMX つの行が表示されます。
| チュートリアルID | チュートリアル名 |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
このデータを取得してウェブページ上に表示できるように、コードを変更しましょう。入力するコードは、データ接続モジュール用に記述したコードの続きとなることに注意してください。
ステップ1) コードを2つの部分に分けてみましょう。
- まず最初に、SELECT文を作成します。これはデータベースからデータを読み込むために使用されます。
- 次に、データベースに対してSELECT文を実行します。これにより、該当するテーブルのすべての行が取得されます。
Code 説明:-
- 最初のステップは、以下の変数を作成することです。
- SqlCommand – SqlCommandはC#で定義されているクラスです。このクラスは、データベースへの読み書き操作を実行するために使用されます。
- DataReader オブジェクトは、SQL クエリで指定されたすべてのデータを取得するために使用されます。 次に、データ リーダーを使用してテーブルのすべての行を XNUMX つずつ読み取ることができます。
- 次に、2つの文字列変数を定義します。1つはSQLコマンド文字列を格納するsql変数、もう1つはテーブルのすべての値を格納するOutput変数です。
- 次のステップは、実際にSQL文を定義することです。今回の場合は、「Select TutorialID, TutorialName from demotb」となります。これにより、demotbテーブルからすべての行が取得されます。
- 次に、データベースに対して SQL ステートメントを実行するために使用されるコマンド オブジェクトを作成します。 SQL コマンドでは、接続オブジェクトと SQL 文字列を渡す必要があります。
- 次に、データリーダーコマンドを実行して、demotbテーブルからすべての行を取得します。
- テーブルのすべての行が揃ったので、次に各行に1つずつアクセスする仕組みが必要です。
- このため、while文を使用してデータリーダーから行を1つずつアクセスします。
- 次に、GetValue メソッドを使用して TutorialID と TutorialName の値を取得します。
ステップ2) 最終ステップでは、出力結果をユーザーに表示します。その後、データベース操作に関連するすべてのオブジェクトを閉じます。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Code 説明:-
- コードの続きとして、出力変数の値を表示します。これは、Response.Write メソッドを使用して行います。
- 最後に、データベース操作に関連するすべてのオブジェクトを閉じます。これは常に良い習慣であることを覚えておいてください。
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、以下の出力が得られます。
出力:-
出力から、プログラムがデータベースから値を取得できたことがはっきりとわかります。その後、データはブラウザでユーザーに表示されます。
InsertCommandを使用してデータベースレコードを挿入する
データへのアクセスと同様に、ASP.NETにはデータベースへのレコード挿入機能もあります。レコード挿入に使用するテーブル構造を例にとってみましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
フォームのコードを変更して、次の行をテーブルに挿入できるようにしましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 3 | VB.Net |
ステップ1) まず最初のステップとして、以下のコードをプログラムに追加しましょう。下記のコードスニペットは、データベースにレコードを挿入するために使用されます。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Insert into demotb(TutorialID,TutorialName) values(3,'VB.Net')"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code 説明:-
- 最初のステップは、以下の変数を作成することです。
- SqlCommand – このデータ型は、データベースに対してSQL操作を実行するオブジェクトを定義するために使用されます。このオブジェクトには、SQL Serverデータベースに対して実行されるSQLコマンドが格納されます。
- DataAdapterオブジェクトは、挿入、削除、更新といったSQLコマンドを実行するために使用されます。
- 次に、SQLコマンド文字列を格納するための文字列変数(sql)を定義します。
- 次のステップは、実際にSQL文を定義することです。この例では、INSERT文を発行します。これにより、TutorialID=3、TutorialName=VB.Netのレコードが挿入されます。
- 次に、データベースに対して SQL ステートメントを実行するために使用されるコマンド オブジェクトを作成します。 SQL コマンドでは、接続オブジェクトと SQL 文字列を渡す必要があります。
- データアダプタコマンドでは、次のようになります。
- 挿入 SQL コマンドをアダプターに関連付けます。
- 次に、ExecuteNonQuery メソッドを呼び出します。これは、データベースに対して挿入ステートメントを実行するために使用されます。
- ExecuteNonQuery メソッドは、 C# データベースに対して任意の DML ステートメント (挿入、削除、更新操作) を発行します。
- 最後に、データベース操作に関連するすべてのオブジェクトを閉じます。これは常に良い習慣であることを覚えておいてください。
ステップ2) 次に、データアクセスセクションで使用したコードと同じコードを追加しましょう。これは、ブラウザに最新のテーブルデータを表示するためのものです。そのためには、以下のコードをdemo.aspx.csファイルに追加します。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
上記のコードを設定し、Visual Studioでプロジェクトを実行すると、以下の出力が得られます。
出力:-
ブラウザウィンドウには、データベースに正常に行が挿入されたことが表示されます。
UpdateCommand を使用してデータベース レコードを更新する
ASP.NETには、データベース内の既存のレコードを更新する機能があります。ここでは、レコードを挿入する例で使用したのと同じテーブル構造を使ってみましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
フォームのコードを変更して、次の行を更新できるようにしましょう。以前の行の値は、TutorialIDが3、TutorialNameがVB.Netでしたが、これを「VB.Net Complete」に更新します。TutorialIDの行の値は変更しません。
古い行
| チュートリアルID | チュートリアル名 |
|---|---|
| 3 | VB.Net |
新しい行
| チュートリアルID | チュートリアル名 |
|---|---|
| 3 | VB.Net 完全版 |
ステップ1) まず最初のステップとして、以下のコードをプログラムに追加しましょう。下記のコードスニペットは、データベース内の既存のレコードを更新するために使用されます。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Update demotb set TutorialName='VB.Net Complete' where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code 説明:-
- 最初のステップは、以下の変数を作成することです。
- SqlCommand – このデータ型は、データベースに対してSQL操作を実行するオブジェクトを定義するために使用されます。このオブジェクトには、SQL Serverデータベースに対して実行されるSQLコマンドが格納されます。
- DataAdapterオブジェクトは、挿入、削除、更新といったSQLコマンドを実行するために使用されます。
- 次に、SQLコマンド文字列を格納するための文字列変数(sql)を定義します。
- 次のステップは、実際にSQL文を定義することです。この例では、更新文を発行します。これにより、TutorialNameが「VB.Net Complete」に更新されます。TutorialIDは変更されず、値は3になります。
- 次に、コマンドオブジェクトを作成します。これは、データベースに対してSQL文を実行するために使用されます。SQLコマンドには、接続オブジェクトとSQL文字列を渡します。
- データアダプタコマンドでは、SQLコマンドをアダプタに関連付けます。次に、ExecuteNonQueryメソッドを発行します。これは、データベースに対して更新ステートメントを実行するために使用されます。
- 最後に、データベース操作に関連するすべてのオブジェクトを閉じます。これは常に良い習慣であることを覚えておいてください。
ステップ2) 次に、データアクセスセクションと同じコードを追加しましょう。これは、ブラウザに最新のテーブルデータを表示するためのものです。そのためには、以下のコードを追加します。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、以下の出力が得られます。
出力:-
ブラウザウィンドウには、データベース内の行が正常に更新されたことが表示されます。
DeleteCommandを使用してデータベースレコードを削除する
ASP.NET では、データベースから既存のレコードを削除できます。レコードを削除する例として、上記のテーブル構造と同じものを使用してみましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net 完全版 |
フォームのコードを変更して、次の行を削除できるようにしましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 3 | VB.Net 完全版 |
ステップ1) まず最初のステップとして、以下のコードをプログラムに追加しましょう。以下のコードスニペットは、データベース内の既存のレコードを削除するために使用されます。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Delete demotb where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.DeleteCommand = new SqlCommand(sql, cnn); adapter.DeleteCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code 説明:-
- このコードの主な違いは、削除SQL文を発行している点です。削除文は、demotbテーブル内でTutorialIDの値が3である行を削除するために使用されます。
- データアダプタコマンドでは、削除SQLコマンドをアダプタに関連付けます。また、データベースに対して削除ステートメントを実行するために使用されるExecuteNonQueryメソッドも発行します。
ステップ2) 次に、データアクセスセクションと同じコードを追加しましょう。これは、ブラウザに最新のテーブルデータを表示するためのものです。そのためには、以下のコードを追加します。
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、以下の出力が得られます。
出力:-
ASP.NET コントロールをデータに接続する
ASP.NETのSqlCommandやSqlDataReaderといったコマンドを使ってデータベースからデータを取得する方法を見てきました。また、テーブルの各行を読み取ってWebページに表示する方法も見てきました。
テーブル内のさまざまなフィールドにコントロールを直接リンクする方法があります。現時点では、以下のコントロールのみがASP.NETアプリケーションにバインドできます。
- チェックBoxリスト
- ラジオボタンリスト
- ドロップダウンリスト
- リストBox
それでは、ASP.NETでコントロールバインディングを使用する方法の例を見てみましょう。ここではリストを使用します。Box 例として、データベースに以下のデータがあるとしましょう。
| チュートリアルID | チュートリアル名 |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net 完全版 |
リストを使ってみましょうBox 制御を行い、demotb テーブルからデータを自動的に取得する方法を確認してみましょう。そのためには、以下の手順に従ってください。
ステップ1) 基本的なWebフォームを作成します。Visual Studioのツールボックスから、ラベルとリストの2つのコンポーネントをドラッグアンドドロップします。Boxはい。次に、以下の手順を実行します。
- 最初のラベルのテキスト値をTutorialIDに設定してください。
- 2番目のラベルのテキスト値を「TutorialName」に設定してください。
上記の手順を実行すると、フォームは以下のようになります。
ステップ2) 次のステップは、各リストの接続を開始することです。Box データベーステーブルへ。
- まず、リストをクリックしてください。Box TutorialIDの場合。これにより、コントロールの横に別のダイアログボックスが表示されます。
- ダイアログボックスから、「データソースの選択」オプションをクリックします。
ステップ3) するとダイアログボックスが表示されます。このダイアログボックスを使用して、新しいデータソースを作成できます。データソースはデータベースへの接続を表します。「新しいデータソース」オプションを選択してください。
ステップ4) 最後のステップで新しいデータ ソースを選択すると、次の画面が表示されます。 ここで、作成するデータ ソースの種類について言及する必要があります。
- SQL Server データベースを操作するには、データベース オプションを選択します。
- 次に、データ ソースに名前を付ける必要があります。 ここでは、DemoDataSource という名前を付けています。
- 最後に、「OK」ボタンをクリックして次の画面に進みます。
ステップ5) 次に、データベースへの接続を作成する必要があります。次の画面で、「新しい接続」ボタンをクリックしてください。
ステップ6) 次に、データベースに接続するための資格情報を追加する必要があります。
- SQL Serverが稼働しているサーバー名を選択してください。
- データベースに接続するには、ユーザーIDとパスワードを入力してください。
- データベースとしてdemotbを選択してください。
- [OK]ボタンをクリックします。
ステップ7) 次の画面では、demotbテーブルが表示されます。デフォルト設定を受け入れるには、「次へ」ボタンをクリックしてください。
ステップ8) 次の画面で接続をテストできるようになります。
- 「クエリテスト」ボタンをクリックして、テーブルから値を取得できるかどうかを確認してください。
- 「完了」ボタンをクリックしてウィザードを完了します。
ステップ9) 最終画面で「OK」ボタンをクリックしてください。これでTutorialIDリストがバインドされます。Box demotb テーブルの TutorialID フィールド名に置き換えます。
ステップ10) それでは、TutorialNameリストをバインドしましょう。Box TutorialNameフィールドに入力します。
- まず、チュートリアル名リストをクリックします。Box.
- 次に、リストの横に表示されるダイアログボックスからデータソースを選択します。Box.
ステップ11) 次の画面でデータ ソースを選択すると、DemoDataSource がすでに表示されています。
- DemoDataSourceを選択してください。
- [OK]ボタンをクリックします。
上記のすべての手順が示されているように実行されると、以下の出力が得られます。
出力:-
出力から、リストがBoxes はそれぞれ TutorialID と TutorialName を表示します。




























