次の方法で共有


CRowset::Insert

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

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

パラメーター

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

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

戻り値

標準の HRESULT を返します。

解説

このメソッドは、すべてのプロバイダーでサポートされない場合がある省略可能なインターフェイス IRowsetChangeを必要としています; この場合、メソッドの戻り E_NOINTERFACE。また VARIANT_TRUE にテーブルの 開く(&&O),開く,[開く] を呼び出す前に DBPROP_IRowsetChange を設定するか、コマンド。行セットが含まれます。

挿入は一つ以上の列が書き込み可能でない場合に失敗する場合があります。これを修正するにはカーソル マップを変更します。

使用例

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

最初に、プロジェクトに新しい ATL オブジェクトを挿入することによって、テーブルのクラスを作成します。たとえば、ワークスペースのペインのプロジェクトを右クリックし、 New ATL Objectを選択します。Data Access のカテゴリで、を選択します Consumer。コンシューマー オブジェクトの型 テーブルを作成します。( テーブル を選択すると、テーブルから行セットを直接作成します; コマンド(&&C),command,コマンド,コマンド(O) を選択することは、 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 クラス