次の方法で共有


CRowset::Insert

アクセサーからデータを使用して新しい行を作成し、初期化します。

HRESULT Insert( 
   int nAccessor = 0, 
   bool bGetHRow = false  
) throw( );

パラメーター

  • nAccessor
    [入力] データを挿入するために使用するアクセサーの番号。

  • bGetHRow
    [入力] 挿入した行のハンドルが取得されたかどうかを示します。

戻り値

標準の HRESULT を返します。

解説

このメソッドでは、省略可能なインターフェイス IRowsetChange が必要です。これはすべてのプロバイダーでサポートされているとは限りません。サポートされていない場合、このメソッドは E_NOINTERFACE を返します。 また、行セットを含むテーブルまたはコマンドで Open を呼び出す前に、DBPROP_IRowsetChangeVARIANT_TRUE に設定する必要があります。

1 つ以上の列が書き込み禁止になっている場合、Insert は失敗することがあります。 これを修正するにはカーソル マップを変更します。

使用例

行セットを使用してデータ ソースにアクセスしてから、その行セットのテーブルを使用して文字列を挿入する方法を次の例に示します。

初めに、New ATL Object をプロジェクトに挿入してテーブル クラスを作成します。 たとえば、ワークスペース ペインでそのプロジェクトを右クリックし、[ATL Objectの新規作成] を選択します。 Data Access カテゴリの [コンシューマー] を選択します。 Table 型のコンシューマー オブジェクトを作成します。 [テーブル] を選択すると、そのテーブルから直接行セットが作成されます。[コマンド] を選択すると、SQL コマンドによって行セットが作成されます。データ ソースへのアクセスに使用するテーブルを指定して、データ ソースを選択します。 コンシューマー オブジェクト CCustomerTable を呼び出す場合は、次のように挿入コードを実装します。

// Access the rowset using the wizard-generated class, CCustomerTable
CCustomerTable rs;           // Your CTable-derived class

// Insert a customer
// Note that for fixed-length fields such as billing ID it isn't necessary
// to set the length
rs.m_BillingID = 5002;
rs.m_dwBillingIDStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_ContactFirstName, sizeof(rs.m_ContactFirstName) / sizeof(TCHAR), 
   _T("Malcolm"));
rs.m_dwContactFirstNameLength = 7;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_L_Name, sizeof(rs.m_L_Name) / sizeof(TCHAR), _T("Reynolds"));
rs.m_dwL_NameLength = 8;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;

rs.m_CustomerID = 2005;
rs.m_dwCustomerIDStatus = DBSTATUS_S_OK;

_tcscpy_s(rs.m_PostalCode, sizeof(rs.m_PostalCode) / sizeof(TCHAR), 
   _T("34213-4444"));
rs.m_dwPostalCodeLength = 10;
rs.m_dwPostalCodeStatus = DBSTATUS_S_OK;

HRESULT hr = rs.Insert();
if (FAILED(hr))
{
   ATLTRACE(_T("Insert failed: 0x%X\n"), hr);
}

必要条件

**ヘッダー:**atldbcli.h

参照

参照

CRowset クラス

その他の技術情報

CRowset のメンバー