คุณสามารถใช้ATL COM AppWizardและATL วัตถุ ตัวช่วยสร้างเพื่อสร้างการบริโภค OLE DB แม่?
การสร้างโครงการ ATL สำหรับผู้บริโภคการ OLE DB
ชื่อโครงการบนแท็บโครงการแล้วคลิกตกลง AppWizard COM ATL ปรากฏ?
ใช้ตัวช่วยสร้างวัตถุ ATL ถัดไป?
การใช้ตัวช่วยสร้างวัตถุ ATL
ใช้ตัวช่วยสร้างวัตถุ ATL การตั้งค่าคุณสมบัติสำหรับผู้บริโภคของคุณ?
การตั้งค่าคุณสมบัติของผู้บริโภคโดยใช้ตัวช่วยสร้างวัตถุ ATL
หลังจากเลือกผู้ให้บริการของคุณและการตั้งค่าอื่น ๆ คลิกทดสอบการเชื่อมต่อเพื่อตรวจสอบการเลือกทำในหน้ากล่องโต้ตอบก่อนหน้านี้ ถ้ากล่องผลลัพธ์รายงาน PASSED คลิกเสร็จสิ้นเพื่อสร้างการเชื่อมโยงข้อมูล กล่องโต้ตอบเลือกตารางในฐานข้อมูลปรากฏขึ้น?
Generators ที่ช่วยสร้างคลาสการเข้าถึงและคำสั่ง (หรือตาราง) คลาส ดังที่แสดงในตัวอย่างผลด้านล่าง เรียนคำสั่งประกอบด้วยรหัสการเปิดแหล่งข้อมูลและ rowset ที่คุณระบุไว้ในตัวช่วยสร้าง เข้าถึงคลาประกอบด้วยแผนที่คอลัมน์สำหรับตารางในฐานข้อมูลคุณเลือก?
// Product.H : Declaration of the CProduct class
#ifndef __PRODUCT_H_
#define __PRODUCT_H_
class CProductAccessor
{
public:
LONG m_ProductID; // Number automatically assigned to new product.
TCHAR m_ProductName[41]; // Number automatically assigned to new product.
LONG m_SupplierID; // Same entry as in Suppliers table.
LONG m_CategoryID; // Same entry as in Categories table.
TCHAR m_QuantityPerUnit[21]; // (e.g., 24-count case, 1-liter bottle).
DB_NUMERIC m_UnitPrice; // (e.g., 24-count case, 1-liter bottle).
SHORT m_UnitsInStock; // (e.g., 24-count case, 1-liter bottle).
SHORT m_UnitsOnOrder; // (e.g., 24-count case, 1-liter bottle).
SHORT m_ReorderLevel; // Minimum units to maintain in stock.
VARIANT_BOOL m_Discontinued; // Yes means item is no longer available.
BEGIN_COLUMN_MAP(CProductAccessor)
COLUMN_ENTRY(1, m_ProductID)
COLUMN_ENTRY(2, m_ProductName)
COLUMN_ENTRY(3, m_SupplierID)
COLUMN_ENTRY(4, m_CategoryID)
COLUMN_ENTRY(5, m_QuantityPerUnit)
COLUMN_ENTRY(6, m_UnitPrice)
COLUMN_ENTRY(7, m_UnitsInStock)
COLUMN_ENTRY(8, m_UnitsOnOrder)
COLUMN_ENTRY(9, m_ReorderLevel)
COLUMN_ENTRY_TYPE(10, DBTYPE_BOOL, m_Discontinued)
END_COLUMN_MAP()
DEFINE_COMMAND(CProductAccessor, _T(" \
SELECT \
ProductID, \
ProductName, \
SupplierID, \
CategoryID, \
QuantityPerUnit, \
UnitPrice, \
UnitsInStock, \
UnitsOnOrder, \
ReorderLevel, \
Discontinued \
FROM Products"))};
class CProduct : public CCommand<CAccessor<CProductAccessor> >
{
public:
HRESULT Open()
{
HRESULT hr;
hr = OpenDataSource();
if (FAILED(hr))
return hr;
return OpenRowset();
}
HRESULT OpenDataSource()
{
HRESULT hr;
CDataSource db;
CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("OLE_DB_NWind_Jet"));
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
hr = db.Open(_T("MSDASQL"), &dbinit);
if (FAILED(hr))
return hr;
return m_session.Open(db);
}
HRESULT OpenRowset()
{
// Set properties for open
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE);
return CCommand<CAccessor<CProductAccessor> >::Open(m_session, NULL, &propset);
}
CSession m_session;
};
#endif // __PRODUCT_H_