You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/atl/reference/cnonstatelessworker-class.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,15 +60,15 @@ template <class Worker> class CNonStatelessWorker
60
60
61
61
|Name|Description|
62
62
|----------|-----------------|
63
-
|[CNonStatelessWorker::RequestType](#cnonstatelessworker__requesttype)|Implementation of [WorkerArchetype::RequestType](../Topic/WorkerArchetype::RequestType.md).|
63
+
|[CNonStatelessWorker::RequestType](#cnonstatelessworker__requesttype)|Implementation of [WorkerArchetype::RequestType](worker-archetype.md#workerarchetype_requesttype).|
64
64
65
65
### Public Methods
66
66
67
67
|Name|Description|
68
68
|----------|-----------------|
69
69
|[CNonStatelessWorker::Execute](#cnonstatelessworker__execute)|Implementation of [WorkerArchetype::Execute](../Topic/WorkerArchetype::Execute.md).|
70
-
|[CNonStatelessWorker::Initialize](#cnonstatelessworker__initialize)|Implementation of [WorkerArchetype::Initialize](../Topic/WorkerArchetype::Initialize.md).|
71
-
|[CNonStatelessWorker::Terminate](#cnonstatelessworker__terminate)|Implementation of [WorkerArchetype::Terminate](../Topic/WorkerArchetype::Terminate.md).|
70
+
|[CNonStatelessWorker::Initialize](#cnonstatelessworker__initialize)|Implementation of [WorkerArchetype::Initialize](worker-archetype.md#workerarchetype_initialize).|
71
+
|[CNonStatelessWorker::Terminate](#cnonstatelessworker__terminate)|Implementation of [WorkerArchetype::Terminate](worker-archetype.md#workerarchetype_terminate).|
72
72
73
73
## Remarks
74
74
This class is a simple worker thread for use with [CThreadPool](../../atl/reference/cthreadpool-class.md). This class doesn't provide any request-handling capabilities of its own. Instead, it instantiates one instance of *Worker* per request and delegates the implementation of its methods to that instance.
@@ -89,10 +89,10 @@ void Execute(
89
89
```
90
90
91
91
### Remarks
92
-
This method creates an instance of the *Worker* class on the stack and calls [Initialize](../Topic/WorkerArchetype::Initialize.md) on that object. If the initialization is successful, this method also calls [Execute](../Topic/WorkerArchetype::Execute.md) and [Terminate](../Topic/WorkerArchetype::Terminate.md) on the same object.
92
+
This method creates an instance of the *Worker* class on the stack and calls [Initialize](worker-archetype.md#workerarchetype_initialize) on that object. If the initialization is successful, this method also calls [Execute](../Topic/WorkerArchetype::Execute.md) and [Terminate](worker-archetype.md#workerarchetype_terminate) on the same object.
This class handles the same type of work item as the class used for the *Worker* template parameter. See [CNonStatelessWorker Overview](../../atl/reference/cnonstatelessworker-class.md) for details.
Copy file name to clipboardExpand all lines: docs/data/odbc/access-to-odbc-and-sql.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ translation.priority.mt:
41
41
# Access to ODBC and SQL
42
42
The Microsoft Foundation Class Library encapsulates many Windows API calls and still lets you call any Windows API function directly. The database classes give you the same flexibility with regard to the ODBC API. While the database classes shield you from much of the complexity of ODBC, you can call ODBC API functions directly from anywhere in your program.
43
43
44
-
Similarly, the database classes shield you from having to work much with [SQL](../../data/odbc/sql.md), but you can use SQL directly if you want. You can customize recordset objects by passing a custom SQL statement (or setting portions of the default statement) when you open the recordset. You can also make SQL calls directly using the [ExecuteSQL](../Topic/CDatabase::ExecuteSQL.md) member function of class [CDatabase](../../mfc/reference/cdatabase-class.md).
44
+
Similarly, the database classes shield you from having to work much with [SQL](../../data/odbc/sql.md), but you can use SQL directly if you want. You can customize recordset objects by passing a custom SQL statement (or setting portions of the default statement) when you open the recordset. You can also make SQL calls directly using the [ExecuteSQL](../mfc/reference/cdatabase-class.md#cdatabase__executesql) member function of class [CDatabase](../../mfc/reference/cdatabase-class.md).
45
45
46
46
For more information, see [ODBC: Calling ODBC API Functions Directly](../../data/odbc/odbc-calling-odbc-api-functions-directly.md) and [SQL: Making Direct SQL Calls (ODBC)](../../data/odbc/sql-making-direct-sql-calls-odbc.md).
Copy file name to clipboardExpand all lines: docs/data/odbc/data-source-managing-connections-odbc.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -130,7 +130,7 @@ This topic applies to the MFC ODBC classes.
130
130
131
131
2. Call its `OpenEx` or **Open** member function.
132
132
133
-
For more information about how to specify the data source if it is something other than the one you specified with a wizard, see [CDatabase::OpenEx](../Topic/CDatabase::OpenEx.md) or [CDatabase::Open](../Topic/CDatabase::Open.md) in the *MFC Reference*.
133
+
For more information about how to specify the data source if it is something other than the one you specified with a wizard, see [CDatabase::OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [CDatabase::Open](../mfc/reference/cdatabase-class.md#cdatabase__open) in the *MFC Reference*.
134
134
135
135
## <a name="_core_disconnecting_from_a_data_source"></a> Disconnecting from a Data Source
136
136
You must close any open recordsets before calling the **Close** member function of `CDatabase`. In recordsets associated with the `CDatabase` object you want to close, any pending `AddNew` or **Edit** statements are canceled and all pending transactions are rolled back.
Copy file name to clipboardExpand all lines: docs/data/odbc/dynaset.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,7 +63,7 @@ This topic describes dynasets and discusses their [availability](#_core_availabi
63
63
64
64
- The ODBC cursor library DLL must not be in use for this data source.
65
65
66
-
If the cursor library is used, it masks some functionality of the underlying ODBC driver that is necessary for dynaset support. If you want to use dynasets (and your ODBC driver has the functionality required for dynasets, as described in the rest of this section), you can cause MFC not to load the cursor library when you create a `CDatabase` object. For more information, see [ODBC](../../data/odbc/odbc-basics.md) and the [OpenEx](../Topic/CDatabase::OpenEx.md) or [Open](../Topic/CDatabase::Open.md) member function of class `CDatabase`.
66
+
If the cursor library is used, it masks some functionality of the underlying ODBC driver that is necessary for dynaset support. If you want to use dynasets (and your ODBC driver has the functionality required for dynasets, as described in the rest of this section), you can cause MFC not to load the cursor library when you create a `CDatabase` object. For more information, see [ODBC](../../data/odbc/odbc-basics.md) and the [OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [Open](../mfc/reference/cdatabase-class.md#cdatabase__open) member function of class `CDatabase`.
67
67
68
68
In ODBC terminology, dynasets and snapshots are referred to as cursors. A cursor is a mechanism used for keeping track of its position in a recordset.
Copy file name to clipboardExpand all lines: docs/data/odbc/odbc-the-odbc-cursor-library.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,7 +81,7 @@ This topic describes the ODBC Cursor Library and explains how to use it. For mor
81
81
The second issue concerns limitations of class [CTime](../../atl-mfc-shared/reference/ctime-class.md) when used with the `RFX_Date` function to transfer time and date information to or from a table. Processing the `CTime` object imposes some overhead in the form of extra intermediate processing during the data transfer. The date range of `CTime` objects might also be too limiting for some applications. A new version of the `RFX_Date` function takes an ODBC **TIMESTAMP_STRUCT** parameter instead of a `CTime` object. For more information, see `RFX_Date` in [Macros and Globals](../Topic/Macros,%20Global%20Functions,%20and%20Global%20Variables.md) in the *MFC Reference*.
82
82
83
83
## <aname="_core_using_the_cursor_library"></a> Using the Cursor Library
84
-
When you connect to a data source — by calling [CDatabase::OpenEx](../Topic/CDatabase::OpenEx.md) or [CDatabase::Open](../Topic/CDatabase::Open.md) — you can specify whether to use the cursor library for the data source. If you will be creating snapshots on that data source, specify the **CDatabase::useCursorLib** option in the `dwOptions` parameter to `OpenEx` or specify **TRUE** for the **bUseCursorLib** parameter to **Open** (the default value is **TRUE**). If your ODBC driver supports dynasets and you want to open dynasets on the data source, do not use the cursor library (it masks some driver functionality needed for dynasets). In that case, do not specify **CDatabase::useCursorLib** in `OpenEx` or specify **FALSE** for the **bUseCursorLib** parameter in **Open**.
84
+
When you connect to a data source — by calling [CDatabase::OpenEx](../mfc/reference/cdatabase-class.md#cdatabase__openex) or [CDatabase::Open](../mfc/reference/cdatabase-class.md#cdatabase__open) — you can specify whether to use the cursor library for the data source. If you will be creating snapshots on that data source, specify the **CDatabase::useCursorLib** option in the `dwOptions` parameter to `OpenEx` or specify **TRUE** for the **bUseCursorLib** parameter to **Open** (the default value is **TRUE**). If your ODBC driver supports dynasets and you want to open dynasets on the data source, do not use the cursor library (it masks some driver functionality needed for dynasets). In that case, do not specify **CDatabase::useCursorLib** in `OpenEx` or specify **FALSE** for the **bUseCursorLib** parameter in **Open**.
Copy file name to clipboardExpand all lines: docs/data/odbc/record-field-exchange-how-rfx-works.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,7 +58,7 @@ This topic explains the RFX process. This is an advanced topic covering:
58
58
Your recordset class's override of `DoFieldExchange` does all the work, moving data in both directions. Like dialog data exchange (DDX), RFX needs information about the data members of your class. The wizard provides the necessary information by writing a recordset-specific implementation of `DoFieldExchange` for you, based on the field data member names and data types you specify with the wizard.
59
59
60
60
## <aname="_core_the_record_field_exchange_process"></a> Record Field Exchange Process
61
-
This section describes the sequence of RFX events as a recordset object is opened and as you add, update, and delete records. The table [Sequence of RFX Operations During Recordset Open](#_core_sequence_of_rfx_operations_during_recordset_open) and the table [Sequence of RFX Operations During Scrolling](#_core_sequence_of_rfx_operations_during_scrolling) in this topic show the process as RFX processes a **Move** command in the recordset and as RFX manages an update. During these processes, [DoFieldExchange](../Topic/CRecordset::DoFieldExchange.md) is called to perform many different operations. The **m_nOperation** data member of the [CFieldExchange](../../mfc/reference/cfieldexchange-class.md) object determines which operation is requested. You might find it helpful to read [Recordset: How Recordsets Select Records (ODBC)](../../data/odbc/recordset-how-recordsets-select-records-odbc.md) and [Recordset: How Recordsets Update Records (ODBC)](../../data/odbc/recordset-how-recordsets-update-records-odbc.md) before you read this material.
61
+
This section describes the sequence of RFX events as a recordset object is opened and as you add, update, and delete records. The table [Sequence of RFX Operations During Recordset Open](#_core_sequence_of_rfx_operations_during_recordset_open) and the table [Sequence of RFX Operations During Scrolling](#_core_sequence_of_rfx_operations_during_scrolling) in this topic show the process as RFX processes a **Move** command in the recordset and as RFX manages an update. During these processes, [DoFieldExchange](../mfc/reference/crecordset-class.md#crecordset__dofieldexchange) is called to perform many different operations. The **m_nOperation** data member of the [CFieldExchange](../../mfc/reference/cfieldexchange-class.md) object determines which operation is requested. You might find it helpful to read [Recordset: How Recordsets Select Records (ODBC)](../../data/odbc/recordset-how-recordsets-select-records-odbc.md) and [Recordset: How Recordsets Update Records (ODBC)](../../data/odbc/recordset-how-recordsets-update-records-odbc.md) before you read this material.
62
62
63
63
### <aname="_mfc_rfx.3a_.initial_binding_of_columns_and_parameters"></a> RFX: Initial Binding of Columns and Parameters
64
64
The following RFX activities occur, in the order shown, when you call a recordset object's [Open](../Topic/CRecordset::Open.md) member function:
@@ -101,7 +101,7 @@ This topic explains the RFX process. This is an advanced topic covering:
101
101
### <aname="_mfc_rfx.3a_.adding_new_records_and_editing_existing_records"></a> RFX: Adding New Records and Editing Existing Records
102
102
If you add a new record, the recordset operates as an edit buffer to build up the contents of the new record. As with adding records, editing records involves changing the values of the recordset's field data members. From the RFX perspective, the sequence is as follows:
103
103
104
-
1. Your call to the recordset's [AddNew](../Topic/CRecordset::AddNew.md) or [Edit](../Topic/CRecordset::Edit.md) member function causes RFX to store the current edit buffer so it can be restored later.
104
+
1. Your call to the recordset's [AddNew](../mfc/reference/crecordset-class.md#crecordset__addnew) or [Edit](../Topic/CRecordset::Edit.md) member function causes RFX to store the current edit buffer so it can be restored later.
105
105
106
106
2.`AddNew` or **Edit** prepares the fields in the edit buffer so RFX can detect changed field data members.
107
107
@@ -139,4 +139,4 @@ This topic explains the RFX process. This is an advanced topic covering:
Copy file name to clipboardExpand all lines: docs/data/odbc/record-field-exchange-rfx.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ The MFC ODBC database classes automate moving data between the data source and a
42
42
> [!NOTE]
43
43
> If you have implemented bulk row fetching in a derived `CRecordset` class, the framework uses the bulk record field exchange (Bulk RFX) mechanism to transfer data. For more information, see [Recordset: Fetching Records in Bulk (ODBC)](../../data/odbc/recordset-fetching-records-in-bulk-odbc.md).
44
44
45
-
RFX is similar to dialog data exchange (DDX). Moving data between a data source and the field data members of a recordset requires multiple calls to the recordset's [DoFieldExchange](../Topic/CRecordset::DoFieldExchange.md) function and considerable interaction between the framework and [ODBC](../../data/odbc/odbc-basics.md). The RFX mechanism is type-safe and saves you the work of calling ODBC functions such as **::SQLBindCol**. For more information about DDX, see [Dialog Data Exchange and Validation](../../mfc/dialog-data-exchange-and-validation.md).
45
+
RFX is similar to dialog data exchange (DDX). Moving data between a data source and the field data members of a recordset requires multiple calls to the recordset's [DoFieldExchange](../mfc/reference/crecordset-class.md#crecordset__dofieldexchange) function and considerable interaction between the framework and [ODBC](../../data/odbc/odbc-basics.md). The RFX mechanism is type-safe and saves you the work of calling ODBC functions such as **::SQLBindCol**. For more information about DDX, see [Dialog Data Exchange and Validation](../../mfc/dialog-data-exchange-and-validation.md).
46
46
47
47
RFX is mostly transparent to you. If you declare your recordset classes with the MFC Application Wizard or **Add Class** (as described in [Adding an MFC ODBC Consumer](../../mfc/reference/adding-an-mfc-odbc-consumer.md)), RFX is built into them automatically. Your recordset class must be derived from the base class `CRecordset` supplied by the framework. The MFC Application Wizard lets you create an initial recordset class. **Add Class** lets you add other recordset classes as you need them. For more information and examples, see [Adding an MFC ODBC Consumer](../../mfc/reference/adding-an-mfc-odbc-consumer.md).
0 commit comments