次の方法で共有


.NET Framework アプリケーションでオブジェクトからデータベースにデータを保存する

DataSet クラスと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初頭のレガシ .NET Framework テクノロジです。 このテクノロジは、ユーザーがデータを変更し、変更をデータベースに保持できるアプリに特に役立ちます。 データセットは実証済みの成功したテクノロジですが、新しい .NET アプリケーションには Entity Framework Core を使用することをお勧めします。 Entity Framework は、オブジェクト モデルとして表形式データを操作するより自然な方法を提供し、よりシンプルなプログラミング インターフェイスを備えています。

オブジェクトから TableAdapter のいずれかの DBDirect メソッド (たとえば、 TableAdapter.Insert) に値を渡すことで、オブジェクト内のデータをデータベースに保存できます。 詳細については、「 TableAdapter」を参照してください。

オブジェクトのコレクションからデータを保存するには、オブジェクトのコレクション (たとえば、次のループ) をループ処理し、TableAdapter の DBDirect メソッドのいずれかを使用して各オブジェクトの値をデータベースに送信します。

既定では、 DBDirect メソッドは、データベースに対して直接実行できる TableAdapter に作成されます。 これらのメソッドは直接呼び出すことができます。データベースに更新を送信するために、変更を調整するために DataSet または DataTable オブジェクトを必要としません。

TableAdapter を構成する場合、メイン クエリは、 DBDirect メソッドを作成するのに十分な情報を提供する必要があります。 たとえば、TableAdapter が、主キー列が定義されていないテーブルのデータに対してクエリを実行するように構成されている場合、 DBDirect メソッドは生成されません。

TableAdapter DBDirect メソッド 説明
TableAdapter.Insert データベースに新しいレコードを追加し、個々の列値をメソッド パラメーターとして渡すことができます。
TableAdapter.Update データベース内の既存のレコードを更新します。 Update メソッドは、元の列と新しい列の値をメソッド パラメーターとして受け取ります。 元の値を使用して元のレコードを検索し、新しい値を使用してそのレコードを更新します。

TableAdapter.Update メソッドは、DataSetDataTableDataRow、またはDataRowの配列をメソッド パラメーターとして取得して、データセットの変更をデータベースに戻すためにも使用されます。
TableAdapter.Delete メソッド パラメーターとして渡された元の列値に基づいて、データベースから既存のレコードを削除します。

オブジェクトからデータベースに新しいレコードを保存するには

  • TableAdapter.Insert メソッドに値を渡してレコードを作成します。

    次の例では、currentCustomer オブジェクトの値を TableAdapter.Insert メソッドに渡して、Customers テーブルに新しい顧客レコードを作成します。

    private void AddNewCustomers(Customer currentCustomer)
    {
        customersTableAdapter.Insert( 
            currentCustomer.CustomerID, 
            currentCustomer.CompanyName, 
            currentCustomer.ContactName, 
            currentCustomer.ContactTitle, 
            currentCustomer.Address, 
            currentCustomer.City, 
            currentCustomer.Region, 
            currentCustomer.PostalCode, 
            currentCustomer.Country, 
            currentCustomer.Phone, 
            currentCustomer.Fax);
    }
    

オブジェクトからデータベースに既存のレコードを更新するには

  • TableAdapter.Update メソッドを呼び出し、新しい値を渡してレコードを更新し、元の値を渡してレコードを見つけることで、レコードを変更します。

    オブジェクトを Update メソッドに渡すには、元の値を維持する必要があります。 この例では、 orig プレフィックスを持つプロパティを使用して、元の値を格納します。

    次の例では、Customer オブジェクトの新しい値と元の値を TableAdapter.Update メソッドに渡して、Customers テーブル内の既存のレコードを更新します。

    private void UpdateCustomer(Customer cust)
    {
        customersTableAdapter.Update(
            cust.CustomerID,
            cust.CompanyName,
            cust.ContactName,
            cust.ContactTitle,
            cust.Address,
            cust.City,
            cust.Region,
            cust.PostalCode,
            cust.Country,
            cust.Phone,
            cust.Fax,
            cust.origCustomerID,
            cust.origCompanyName,
            cust.origContactName,
            cust.origContactTitle,
            cust.origAddress,
            cust.origCity,
            cust.origRegion,
            cust.origPostalCode,
            cust.origCountry,
            cust.origPhone,
            cust.origFax);
    }
    

データベースから既存のレコードを削除するには

  • TableAdapter.Delete メソッドを呼び出し、元の値を渡してレコードを見つけることで、レコードを削除します。

    オブジェクトを Delete メソッドに渡すには、元の値を維持する必要があります。 この例では、 orig プレフィックスを持つプロパティを使用して、元の値を格納します。

    次の例では、Customer オブジェクトの元の値を TableAdapter.Delete メソッドに渡して、Customers テーブルからレコードを削除します。

    private void DeleteCustomer(Customer cust)
    {
        customersTableAdapter.Delete(
            cust.origCustomerID,
            cust.origCompanyName,
            cust.origContactName,
            cust.origContactTitle,
            cust.origAddress,
            cust.origCity,
            cust.origRegion,
            cust.origPostalCode,
            cust.origCountry,
            cust.origPhone,
            cust.origFax);
    }
    

.NET のセキュリティ

データベース内のテーブルに対して選択した INSERTUPDATE、または DELETE を実行する権限が必要です。