Metode yang Dihasilkan Wizard Konsumen
Wizard Konsumen ATL OLE DB tidak tersedia di Visual Studio 2019 dan yang lebih baru. Anda masih dapat menambahkan fungsionalitas secara manual.
Wizard Konsumen ATL OLE DB dan Wizard Aplikasi MFC menghasilkan fungsi tertentu yang harus Anda ketahui. Beberapa metode diimplementasikan secara berbeda dalam proyek atribut, sehingga ada beberapa peringatan; setiap kasus tercakup di bawah ini. Untuk informasi tentang melihat kode yang disuntikkan, lihat Debugging Kode yang Disuntikkan.
OpenAll
membuka sumber data, set baris, dan mengaktifkan marka buku jika tersedia.CloseAll
menutup semua set baris yang terbuka dan merilis semua eksekusi perintah.OpenRowset
dipanggil olehOpenAll
untuk membuka rowset atau rowset konsumen.GetRowsetProperties
mengambil penunjuk ke kumpulan properti kumpulan baris yang propertinya dapat diatur.OpenDataSource
membuka sumber data menggunakan string inisialisasi yang Anda tentukan dalam kotak dialog Properti Tautan Data.CloseDataSource
menutup sumber data dengan cara yang sesuai.
OpenAll dan CloseAll
HRESULT OpenAll();
void CloseAll();
Contoh berikut menunjukkan bagaimana Anda dapat memanggil OpenAll
dan CloseAll
kapan Anda menjalankan perintah yang sama berulang kali. Bandingkan contoh kode di CCommand::Close, yang menunjukkan variasi yang memanggil Close
dan ReleaseCommand
bukan CloseAll
.
int main(int argc, char* argv[])
{
HRESULT hr;
hr = CoInitialize(NULL);
CCustOrdersDetail rs; // Your CCommand-derived class
rs.m_OrderID = 10248; // Open order 10248
hr = rs.OpenAll(); // (Open also executes the command)
hr = rs.MoveFirst(); // Move to the first row and print it
printf( "Name: %s, Unit Price: %d, Quantity: %d, Discount %d, Extended Price %d\n", rs.m_ProductName, rs.m_UnitPrice.int64, rs.m_Quantity, rs.m_Discount, rs.m_ExtendedPrice.int64 );
// Close the first command execution
rs.Close();
rs.m_OrderID = 10249; // Open order 10249 (a new order)
hr = rs.Open(); // (Open also executes the command)
hr = rs.MoveFirst(); // Move to the first row and print it
printf( "Name: %s, Unit Price: %d, Quantity: %d, Discount %d, Extended Price %d\n", rs.m_ProductName, rs.m_UnitPrice.int64, rs.m_Quantity, rs.m_Discount, rs.m_ExtendedPrice.int64 );
// Close the second command execution;
// Instead of rs.CloseAll() you could call
// rs.Close() and rs.ReleaseCommand():
rs.CloseAll();
CoUninitialize();
return 0;
}
Keterangan
Jika Anda menentukan HasBookmark
metode, OpenAll
kode mengatur DBPROP_IRowsetLocate
properti; pastikan Anda hanya melakukan ini jika penyedia Anda mendukung properti tersebut.
OpenRowset
// OLE DB Template version:
HRESULT OpenRowset(DBPROPSET* pPropSet = NULL)
// Attribute-injected version:
HRESULT OpenRowset(const CSession& session, LPCWSTR szCommand = NULL);
OpenAll
memanggil metode ini untuk membuka set baris atau kumpulan baris di konsumen. Biasanya, Anda tidak perlu menelepon OpenRowset
kecuali Anda ingin bekerja dengan beberapa sumber data/sesi/set baris. OpenRowset
dideklarasikan dalam file header kelas perintah atau tabel:
// OLE DB Template version:
HRESULT OpenRowset(DBPROPSET *pPropSet = NULL)
{
HRESULT hr = Open(m_session, NULL, pPropSet);
#ifdef _DEBUG
if(FAILED(hr))
AtlTraceErrorRecords(hr);
#endif
return hr;
}
Atribut menerapkan metode ini secara berbeda. Versi ini mengambil objek sesi dan string perintah yang default ke string perintah yang ditentukan dalam db_command, meskipun Anda dapat meneruskan yang berbeda. Jika Anda menentukan HasBookmark
metode, OpenRowset
kode mengatur DBPROP_IRowsetLocate
properti; pastikan Anda hanya melakukan ini jika penyedia Anda mendukung properti tersebut.
// Attribute-injected version:
HRESULT OpenRowset(const CSession& session, LPCWSTR szCommand=NULL)
{
DBPROPSET *pPropSet = NULL;
CDBPropSet propset(DBPROPSET_ROWSET);
__if_exists(HasBookmark)
{
propset.AddProperty(DBPROP_IRowsetLocate, true);
pPropSet= &propset;
}
...
}
GetRowsetProperties
void GetRowsetProperties(CDBPropSet* pPropSet);
Metode ini mengambil penunjuk ke kumpulan properti set baris; Anda dapat menggunakan penunjuk ini untuk mengatur properti seperti DBPROP_IRowsetChange
. GetRowsetProperties
digunakan di kelas rekaman pengguna sebagai berikut. Anda dapat mengubah kode ini untuk mengatur properti kumpulan baris tambahan:
void GetRowsetProperties(CDBPropSet* pPropSet)
{
pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
}
Keterangan
Anda tidak boleh menentukan metode global GetRowsetProperties
karena bisa berkonflik dengan metode yang ditentukan oleh wizard. Ini adalah metode yang dihasilkan wizard yang Anda dapatkan dengan proyek yang di-templat dan diatribusikan; atribut tidak menyuntikkan kode ini.
OpenDataSource dan CloseDataSource
HRESULT OpenDataSource();
void CloseDataSource();
Keterangan
Wizard menentukan metode OpenDataSource
dan CloseDataSource
; OpenDataSource
memanggil CDataSource::OpenFromInitializationString.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk