CRowset : : insertion
Créé et initialise une nouvelle ligne en utilisant les données provenant de l'accesseur.
HRESULT Insert(
int nAccessor = 0,
bool bGetHRow = false
) throw( );
Paramètres
nAccessor
[in] L'index de l'accesseur à utiliser pour insérer les données.bGetHRow
[in] indique si le descripteur de la ligne insérée est extraite.
Valeur de retour
Un HRESULT standard.
Notes
Cette méthode requiert l'interface facultative IRowsetChange, qui peut ne pas être prise en charge chez tous les fournisseurs ; dans ce cas, la méthode retourne E_NOINTERFACE. Vous devez également définir DBPROP_IRowsetChange sur VARIANT_TRUE avant d'appeler Ouvrir sur la table ou la commande contenant l'ensemble de lignes.
L'insertion peut échouer si une ou plusieurs colonnes ne sont pas écrivable. Modifiez le mappage du curseur pour remédier à cette situation.
Exemple
L'exemple suivant indique comment accéder à une source de données via un ensemble de lignes puis insérer une chaîne à l'aide d'une table dans cet ensemble de lignes.
En premier lieu, créez une classe de table en insérant un objet ATL dans votre projet. Par exemple, cliquez avec le bouton droit sur le projet dans le volet de l'espace de travail et sélectionnez New ATL Object. De Accès aux données, sélectionnez Consommateur. Créez un objet de consommateur de type Table. (Sélection Table crée un ensemble de lignes directement de la table ; sélectionnez Commande crée un ensemble de lignes à une commande SQL.) Sélectionnez une source de données, en spécifiant une table à laquelle accéder à la source de données. Si vous appelez votre objet CCustomerTabledu consommateur, vous implémenteriez alors votre code d'insertion comme suit :
// 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);
}
Configuration requise
En-tête : atldbcli.h