Bagikan melalui


Kelas CCommand

Menyediakan metode untuk mengatur dan menjalankan perintah.

Sintaks

template <class TAccessor = CNoAccessor,
   template <typename T> class TRowset = CRowset,
   class TMultiple = CNoMultipleResults>
class CCommand :
   public CAccessorRowset <TAccessor, TRowset>,
   public CCommandBase,
   public TMultiple

Parameter

TAccessor
Jenis kelas aksesor (seperti CDynamicParameterAccessor, , CDynamicStringAccessoratau CEnumeratorAccessor) yang Anda inginkan untuk digunakan perintah. Defaultnya adalah CNoAccessor, yang menentukan bahwa kelas tidak mendukung parameter atau kolom output.

TRowset
Jenis kelas set baris (seperti CArrayRowset atau CNoRowset) yang Anda inginkan untuk digunakan perintah. Default adalah CRowset.

TMultiple
Untuk menggunakan perintah OLE DB yang dapat mengembalikan beberapa hasil, tentukan CMultipleResults. Jika tidak, gunakan CNoMultipleResults. Untuk detailnya, lihat IMultipleResults.

Persyaratan

Header: atldbcli.h

Anggota

Metode

Nama Deskripsi
Tutup Menutup perintah saat ini.
GetNextResult Mengambil hasil berikutnya saat menggunakan beberapa tataan hasil.
Buka Menjalankan dan secara opsional mengikat perintah.

Metode yang Diwarisi

Nama Deskripsi
Buat Membuat perintah baru untuk sesi yang ditentukan, lalu mengatur teks perintah.
BuatCommand Membuat perintah baru.
GetParameterInfo Mendapatkan daftar parameter perintah, nama, dan jenisnya.
Siapkan Memvalidasi dan mengoptimalkan perintah saat ini.
ReleaseCommand Merilis aksesor parameter jika perlu, lalu merilis perintah.
SetParameterInfo Menentukan jenis asli dari setiap parameter perintah.
Batalkan pra-penyebaran Membuang rencana eksekusi perintah saat ini.

Keterangan

Gunakan kelas ini saat Anda perlu melakukan operasi berbasis parameter atau menjalankan perintah. Jika Anda hanya perlu membuka set baris sederhana, gunakan CTable sebagai gantinya.

Kelas aksesor yang Anda gunakan menentukan metode pengikatan parameter dan data.

Perhatikan bahwa Anda tidak dapat menggunakan prosedur tersimpan dengan Penyedia OLE DB untuk Jet karena penyedia tersebut tidak mendukung prosedur tersimpan (hanya konstanta yang diizinkan dalam string kueri).

CCommand::Close

Merilis kumpulan baris aksesor yang terkait dengan perintah .

Sintaks

void Close();

Keterangan

Perintah menggunakan rowset, aksesor tataan hasil, dan (opsional) aksesor parameter (tidak seperti tabel, yang tidak mendukung parameter dan tidak memerlukan aksesor parameter).

Saat Anda menjalankan perintah, Anda harus memanggil dan Close ReleaseCommand setelah perintah.

Ketika Anda ingin menjalankan perintah yang sama berulang kali, Anda harus merilis setiap aksesor set hasil dengan memanggil Close sebelum memanggil Execute. Di akhir seri, Anda harus merilis aksesor parameter dengan memanggil ReleaseCommand. Skenario umum lainnya adalah memanggil prosedur tersimpan yang memiliki parameter output. Pada banyak penyedia (seperti penyedia OLE DB untuk SQL Server) nilai parameter output tidak akan dapat diakses sampai Anda menutup aksesor tataan hasil. Panggil Close untuk menutup set baris yang dikembalikan dan aksesor kumpulan hasil, tetapi bukan aksesor parameter, sehingga memungkinkan Anda untuk mengambil nilai parameter output.

Contoh

Contoh berikut menunjukkan bagaimana Anda dapat memanggil Close dan ReleaseCommand kapan Anda menjalankan perintah yang sama berulang kali.

void DoCCommandTest()
{
   HRESULT hr;

   hr = CoInitialize(NULL);

   CCustomer rs;           // Your CCommand-derived class
   rs.m_BillingID = 6611;  // Open billing ID 6611
   hr = rs.OpenAll();      // (Open also executes the command)
   hr = rs.MoveFirst();    // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the first command execution
   rs.Close();

   rs.m_BillingID = 3333;     // Open billing ID 3333 (a new customer)
   hr = rs.Open();            // (Open also executes the command)
   hr = rs.MoveFirst();       // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the second command execution;
   // Instead of the two following lines
   // you could simply call rs.CloseAll()
   // (a wizard-generated method):
   rs.Close();
   rs.ReleaseCommand();

   CoUninitialize();
}

CCommand::GetNextResult

Mengambil tataan hasil berikutnya jika tersedia.

Sintaks

HRESULT GetNextResult(DBROWCOUNT* pulRowsAffected,
   bool bBind = true) throw();

Parameter

pulRowsAffected
[masuk/keluar] Penunjuk ke memori tempat jumlah baris yang terpengaruh oleh perintah dikembalikan.

bBind
[di] Menentukan apakah akan mengikat perintah secara otomatis setelah dijalankan. Defaultnya adalah true, yang menyebabkan perintah terikat secara otomatis. Mengatur bBind untuk false mencegah pengikatan otomatis perintah sehingga Anda dapat mengikat secara manual. (Pengikatan manual sangat menarik bagi pengguna OLAP.)

Tampilkan Nilai

HRESULT standar.

Keterangan

Jika kumpulan hasil telah diambil sebelumnya, fungsi ini merilis tataan hasil sebelumnya dan membatalkan ikatan kolom. Jika bBind adalah true, bBind mengikat kolom baru.

Anda harus memanggil fungsi ini hanya jika Anda telah menentukan beberapa hasil dengan mengatur CCommand parameter templat TMultipleCMultipleResults=.

CCommand::Open

Menjalankan dan secara opsional mengikat perintah.

Sintaks

HRESULT Open(const CSession& session,
   LPCWSTR wszCommand,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(const CSession& session,
   LPCSTR szCommand,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(const CSession& session,
   INT szCommand = NULL,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

Parameter

sesi
[di] Sesi untuk menjalankan perintah.

wszCommand
[di] Perintah untuk dijalankan, diteruskan sebagai string Unicode. Dapat berupa NULL saat menggunakan CAccessor, dalam hal ini perintah akan diambil dari nilai yang diteruskan ke makro DEFINE_COMMAND . Lihat ICommand::Execute di Referensi Programmer OLE DB untuk detailnya.

szCommand
[di] Sama seperti wszCommand kecuali bahwa parameter ini mengambil string perintah ANSI. Bentuk keempat metode ini dapat mengambil nilai NULL. Lihat "Komentar" nanti dalam topik ini untuk detailnya.

pPropSet
[di] Penunjuk ke array struktur DBPROPSET yang berisi properti dan nilai yang akan diatur. Lihat Kumpulan Properti dan Grup Properti di Referensi Programmer OLE DB di Windows SDK.

pRowsAffected
[masuk/keluar] Penunjuk ke memori tempat jumlah baris yang terpengaruh oleh perintah dikembalikan. Jika *pRowsAffected adalah NULL, tidak ada jumlah baris yang dikembalikan. Jika tidak, Open tetapkan *pRowsAffected sesuai dengan kondisi berikut:

Jika Kemudian
Elemen cParamSets pParams lebih besar dari 1 *pRowsAffected mewakili jumlah total baris yang dipengaruhi oleh semua set parameter yang ditentukan dalam eksekusi.
Jumlah baris yang terpengaruh tidak tersedia *pRowsAffected diatur ke -1.
Perintah tidak memperbarui, menghapus, atau menyisipkan baris *pRowsAffected tidak terdefinisi.

guidCommand
[di] GUID yang menentukan sintaksis dan aturan umum untuk digunakan penyedia dalam mengurai teks perintah. Lihat ICommandText::GetCommandText dan ICommandText::SetCommandText di Referensi Programmer OLE DB untuk detailnya.

bBind
[di] Menentukan apakah akan mengikat perintah secara otomatis setelah dijalankan. Defaultnya adalah true, yang menyebabkan perintah terikat secara otomatis. Mengatur bBind untuk false mencegah pengikatan otomatis perintah sehingga Anda dapat mengikat secara manual. (Pengikatan manual sangat menarik bagi pengguna OLAP.)

ulPropSets
[di] Jumlah struktur DBPROPSET yang diteruskan dalam argumen pPropSet.

Tampilkan Nilai

HRESULT standar.

Keterangan

Tiga bentuk pertama mengambil Open sesi, membuat perintah, dan menjalankan perintah, mengikat parameter apa pun seperlunya.

Bentuk pertama mengambil Open string perintah Unicode dan tidak memiliki nilai default.

Bentuk kedua mengambil Open string perintah ANSI dan tanpa nilai default (disediakan untuk kompatibilitas mundur dengan aplikasi ANSI yang ada).

Bentuk ketiga memungkinkan Open string perintah menjadi NULL, karena jenis int dengan nilai default NULL. Ini disediakan untuk memanggil Open(session, NULL); atau Open(session); karena NULL berjenis int. Versi ini memerlukan dan menegaskan bahwa parameter adalah int NULL.

Gunakan bentuk keempat saat Open Anda telah membuat perintah dan Anda ingin melakukan satu Persiapan dan beberapa eksekusi.

Catatan

OpenExecutepanggilan , yang pada gilirannya memanggil GetNextResult.

CCommand::Create

Memanggil CCommand::CreateCommand untuk membuat perintah untuk sesi yang ditentukan, lalu memanggil ICommandText::SetCommandText untuk menentukan teks perintah.

Sintaks

HRESULT CCommandBase::Create(const CSession& session,
   LPCWSTR wszCommand,
   REFGUID guidCommand = DBGUID_DEFAULT) throw ();

HRESULT CCommandBase::Create(const CSession& session,
   LPCSTR szCommand,
   REFGUID guidCommand = DBGUID_DEFAULT) throw ();

Parameter

sesi
[di] Sesi untuk membuat perintah.

wszCommand
[di] Penunjuk ke teks Unicode dari string perintah.

szCommand
[di] Penunjuk ke teks ANSI dari string perintah.

guidCommand
[di] GUID yang menentukan sintaksis dan aturan umum untuk digunakan penyedia dalam mengurai teks perintah. Untuk deskripsi dialek, lihat ICommandText::GetCommandText di Referensi Programmer OLE DB.

Tampilkan Nilai

HRESULT standar.

Keterangan

Bentuk pertama mengambil Create string perintah Unicode. Bentuk kedua mengambil Create string perintah ANSI (disediakan untuk kompatibilitas mundur dengan aplikasi ANSI yang ada).

CCommand::CreateCommand

Membuat perintah baru.

Sintaks

HRESULT CCommandBase::CreateCommand(const CSession& session) throw ();

Parameter

sesi
[di] Objek CSession yang akan dikaitkan dengan perintah baru.

Tampilkan Nilai

HRESULT standar.

Keterangan

Metode ini membuat perintah menggunakan objek sesi yang ditentukan.

CCommand::GetParameterInfo

Mendapatkan daftar parameter perintah, nama, dan jenisnya.

Sintaks

HRESULT CCommandBase::GetParameterInfo(DB_UPARAMS* pParams,
   DBPARAMINFO** ppParamInfo,
   OLECHAR** ppNamesBuffer) throw ();

Parameter

Lihat ICommandWithParameters::GetParameterInfo di Referensi Programmer OLE DB.

Tampilkan Nilai

HRESULT standar.

CCommand::P repare

Memvalidasi dan mengoptimalkan perintah saat ini.

Sintaks

HRESULT CCommandBase::Prepare(ULONG cExpectedRuns = 0) throw();

Parameter

cExpectedRuns
[di] Berapa kali Anda berharap untuk menjalankan perintah.

Tampilkan Nilai

HRESULT standar.

Keterangan

Metode ini membungkus metode OLE DB ICommandPrepare::P repare.

CCommand::ReleaseCommand

Merilis aksesor parameter, lalu merilis perintah itu sendiri.

Sintaks

void CCommandBase::ReleaseCommand() throw();

Keterangan

ReleaseCommand digunakan bersama dengan Close. Lihat Tutup untuk detail penggunaan.

CCommand::SetParameterInfo

Menentukan jenis asli dari setiap parameter perintah.

Sintaks

HRESULT CCommandBase::SetParameterInfo(DB_UPARAMS ulParams,
   const DBORDINAL* pOrdinals,
   const DBPARAMBINDINFO* pParamInfo) throw();

Parameter

Lihat ICommandWithParameters::SetParameterInfo di Referensi Programmer OLE DB.

Tampilkan Nilai

HRESULT standar.

CCommand::Unprepare

Membuang rencana eksekusi perintah saat ini.

Sintaks

HRESULT CCommandBase::Unprepare() throw();

Tampilkan Nilai

HRESULT standar.

Keterangan

Metode ini membungkus metode OLE DB ICommandPrepare::Unprepare.

Lihat juga

Templat Konsumen OLE DB
Referensi Templat Konsumen OLE DB