次の方法で共有


CRowset::Insert

更新 : 2007 年 11 月

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

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 のメンバ