次の方法で共有


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

Note

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

オブジェクト内のデータをデータベースに保存するには、オブジェクトから TableAdapter のいずれかの DBDirect メソッド (TableAdapter.Insert など) に値を渡します。 詳細については、TableAdapter に関するページを参照してください。

オブジェクトのコレクションのデータを保存するには、オブジェクトのコレクションをループ処理し (for-next ループなど)、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 を実行するアクセス許可が必要です。