CRowset::Insert
アクセサーからデータを使用して新しい行を作成し、初期化します。
HRESULT Insert(
int nAccessor = 0,
bool bGetHRow = false
) throw( );
パラメーター
nAccessor
[入力] データを挿入するために使用するアクセサーの番号。bGetHRow
[入力] 挿入した行のハンドルが取得されたかどうかを示します。
戻り値
標準の HRESULT を返します。
解説
このメソッドでは、省略可能なインターフェイス IRowsetChange が必要です。これはすべてのプロバイダーでサポートされているとは限りません。サポートされていない場合、このメソッドは E_NOINTERFACE を返します。 また、行セットを含むテーブルまたはコマンドで Open を呼び出す前に、DBPROP_IRowsetChange を VARIANT_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