ketyiaの学んだこと議事録

このサイトでは学んだことを記事にまとめていきます

ASP.NETについて勉強⑥ ~ADO.NET~

ASP.NETについて勉強⑥ ~ADO.NETについて~


こんばんは!
今、C#ASP.NETについて学んでいますので、アウトプットで記事にまとめていきます!!

今回はADO.NETについてまとめていきます。

ADO.NETについて


ADO.NETは、.NET Frameworkの一部であり、データベースとの対話を可能にする一連のコンポーネントです。これにより、データベースからデータを取得し、データベースにデータを挿入、更新、削除することができます。

ADO.NETには主に次の5つのコンポーネントがあります:

Connection

データベースへの接続を管理します。

Command

SQLクエリまたはストアドプロシージャを実行します。

DataReader

順方向専用のストリームを提供し、データベースから行を効率的に取得します。

DataAdapter

データベースとDataSet(メモリ内のデータ表現)間のブリッジとして機能します。

DataSet

メモリ内のデータベースとして機能します。

データベースとの接続形態


接続型データアクセス

接続型データアクセスは、データベースとの間で常に開いている接続を必要とします。これは、データベースからデータを読み取り、データベースにデータを書き込むために使用されます。ADO.NETのSqlConnection、SqlCommand、およびSqlDataReaderクラスは、接続型データアクセスの例です。

リアルタイムでデータを取得または更新する必要がある場合、または大量のデータを処理する必要がある場合には、接続型データアクセスを使用すると良いでしょう。しかし、接続が開いている間、その接続は他のプロセスで使用できないため、リソースを効率的に使用する必要があります。

非接続型データアクセス

非接続型データアクセスは、データベースとの間で開いている接続を必要としません。代わりに、データは一時的にメモリ内に格納され、その後でデータベースに書き戻されます。ADO.NETのDataSetとDataAdapterクラスは、非接続型データアクセスの例です。

一度に少量のデータを扱う場合、またはデータベースへの接続が頻繁に切断される可能性がある場合には、非接続型データアクセスを使用すると良いでしょう。しかし、大量のデータをメモリに格納すると、パフォーマンスに影響を与える可能性があるため、注意が必要です。

短時間トランザクション処理


短時間トランザクション処理は、その名の通り、短い時間で完了するトランザクションを指します。これらのトランザクションは、通常、一連の操作を一度に実行し、すべての操作が成功した場合にのみコミット(確定)されます。一部の操作が失敗すると、トランザクション全体がロールバック(取り消し)されます。

例えば、銀行の口座間での資金移動は、短時間トランザクションの一例です。このトランザクションは、資金を一つの口座から引き出し、別の口座に預け入れる二つの操作から成り立っています。これらの操作は一緒に行われ、どちらか一方でも失敗すれば、全体が取り消されます。

長時間トランザクション処理


一方、長時間トランザクション処理は、時間の経過とともに一連の操作が行われるトランザクションを指します。これらのトランザクションは、通常、複数の短時間トランザクションから成り立っています。

例えば、オンラインショッピングは、長時間トランザクションの一例です。顧客が商品をカートに追加し、注文を確定し、支払いを行い、商品が発送されるまでの一連の操作が含まれます。これらの各操作は個々の短時間トランザクションとして扱われ、各ステップが完了するたびにデータベースが更新されます。

これらのトランザクション処理の理解は、データの整合性を保つために重要です。短時間トランザクションは、全てまたは何もなしの原則(全ての操作が成功するか、一つでも失敗すれば全て取り消す)に基づいています。一方、長時間トランザクションは、各ステップが個々に完了し、その結果が保存されるという原則に基づいています。これにより、システムが障害から回復した場合でも、トランザクションの状態を正確に把握することができます。これらの原則は、データベースシステムが一貫性と耐久性を維持するための基礎となっています。

実際にASP.NET Web Formsで試してみる


以下のようなコードを書いてみます

>|aspx| 
<%--
    FileName: test.aspx
    Created by: keita
  Created on: 2024.6

    Description: 
   ADO.net
--%>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form2" runat="server">
    <div>
      <asp:GridView ID="GridView1" runat="server" />
    </div>
    </form>
</body>
</html>
||<

 

>|C#|
/*
 * FileName: test.aspx.cs
 * Created by: keita
 * Created on: 2024.6
 * 
 * Description: 
* ADO.net
*/
using System;

public partial class test : System.Web.UI.Page
{
  string connectionString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;
  using (SqlConnection connection = new SqlConnection(connectionString))
  {
      connection.Open();
      using (SqlCommand command = new SqlCommand("SELECT * FROM YourTable", connection))
      {
          SqlDataAdapter adapter = new SqlDataAdapter(command);
           DataTable table = new DataTable();
           adapter.Fill(table);
           GridView1.DataSource = table;
           GridView1.DataBind();
       }
  }
}
||<


実行しようと思ったのですが、ちょっと環境構築がめんどくさいので、興味ある方は試してみてください。

ADO.NETを使用してデータベースに接続し、データを取得し、そのデータをGridViewコントロールにバインドします。

このように使用していきます!
データベースはすべてのアプリで使用するといっても過言でない要素なので、しっかり覚えて使えるようになりたいですね~

今日はここまでです♪
ここまで読んでいただきありがとうございます!