Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
När du uppdaterar en rad efter bokmärke gör SQLBulkOperations att datakällan uppdaterar en eller flera rader i tabellen. Raderna identifieras av bokmärket i en bunden bokmärkeskolumn. Raden uppdateras med data i programbuffertarna för varje bunden kolumn (förutom när värdet i längden/indikatorbufferten för en kolumn är SQL_COLUMN_IGNORE). Obundna kolumner uppdateras inte.
För att uppdatera rader via bokmärke med SQLBulkOperations, ska programmet:
Hämtar och cachelagrar bokmärken för alla rader som ska uppdateras. Om det finns fler än ett bokmärke och kolumnmässigt bindning används lagras bokmärkena i en matris. Om det finns fler än ett bokmärke och radvis bindning används lagras bokmärkena i en matris med radstrukturer.
Anger SQL_ATTR_ROW_ARRAY_SIZE-instruktionsattributet till antalet bokmärken och binder bufferten som innehåller bokmärkesvärdet, eller matrisen med bokmärken, till kolumn 0.
Placerar de nya datavärdena i raduppsättningsbuffertarna. Information om hur du skickar långa data med SQLBulkOperations finns i Long Data och SQLSetPos och SQLBulkOperations.
Anger värdet i längden/indikatorbufferten för varje kolumn efter behov. Det här är bytelängden för data eller SQL_NTS för kolumner som är bundna till strängbuffertar, bytelängden för data för kolumner som är bundna till binära buffertar och SQL_NULL_DATA för kolumner som ska anges till NULL.
Anger värdet i längden/indikatorbufferten för de kolumner som inte ska uppdateras till SQL_COLUMN_IGNORE. Även om programmet kan hoppa över det här steget och skicka om befintliga data är detta ineffektivt och riskerar att skicka värden till datakällan som trunkerades när de lästes.
Anropar SQLBulkOperations med argumentet Operation inställt på SQL_UPDATE_BY_BOOKMARK.
För varje rad som skickas till datakällan som en uppdatering ska programbuffertarna ha giltiga raddata. Om programbuffertarna har fyllts genom hämtning, om en radstatusmatris har underhållits och om statusvärdet för en rad är SQL_ROW_DELETED, SQL_ROW_ERROR eller SQL_ROW_NOROW, kan ogiltiga data oavsiktligt skickas till datakällan.