Aracılığıyla paylaş


CCommand Sınıfı

Bir komutu ayarlamak ve yürütmek için yöntemler sağlar.

Sözdizimi

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

Parametreler

TAccessor
Komutun kullanmasını istediğiniz erişimci sınıfının türü (, veya CEnumeratorAccessorgibiCDynamicParameterAccessorCDynamicStringAccessor). Varsayılan değer, sınıfın parametreleri veya çıkış sütunlarını desteklemediğini belirten değeridir CNoAccessor.

TRowset
Komutun kullanmasını istediğiniz satır kümesi sınıfının (veya gibi CArrayRowset CNoRowset) türü. Varsayılan değer: CRowset.

TMultiple
Birden çok sonuç döndürebilen bir OLE DB komutu kullanmak için CMultipleResults belirtin. Aksi takdirde, CNoMultipleResults kullanın. Ayrıntılar için bkz . IMultipleResults.

Gereksinimler

Üst bilgi: atldbcli.h

Üyeler

Yöntemler

Veri Akışı Adı Açıklama
Kapat Geçerli komutu kapatır.
GetNextResult Birden çok sonuç kümesi kullanılırken sonraki sonucu getirir.
komutunu yürütür ve isteğe bağlı olarak bağlar.

Devralınan Yöntemler

Veri Akışı Adı Açıklama
Oluştur Belirtilen oturum için yeni bir komut oluşturur ve ardından komut metnini ayarlar.
Komut Oluştur Yeni bir komut oluşturur.
GetParameterInfo Komutun parametrelerinin, adlarının ve türlerinin listesini alır.
Hazırlama Geçerli komutu doğrular ve iyileştirir.
ReleaseCommand Gerekirse parametre erişimcisini serbest bırakır ve ardından komutunu serbest bırakır.
SetParameterInfo Her komut parametresinin yerel türünü belirtir.
Hazırlıksız Geçerli komut yürütme planını atar.

Açıklamalar

Parametre tabanlı bir işlem gerçekleştirmeniz veya bir komut yürütmeniz gerektiğinde bu sınıfı kullanın. Yalnızca basit bir satır kümesi açmanız gerekiyorsa, bunun yerine CTable kullanın.

Kullandığınız erişimci sınıfı, parametreleri ve verileri bağlama yöntemini belirler.

Sağlayıcı saklı yordamları desteklemediğinden (sorgu dizelerinde yalnızca sabitlere izin verilir) Jet için OLE DB Sağlayıcısı ile saklı yordamları kullanamayacağınızı unutmayın.

CCommand::Close

komutuyla ilişkili erişimci satır kümesini serbest bırakır.

Sözdizimi

void Close();

Açıklamalar

Komut satır kümesi, sonuç kümesi erişimcisi ve (isteğe bağlı olarak) parametre erişimcisi kullanır (parametreleri desteklemeyen ve parametre erişimcisi gerektirmeyen tablolardan farklı olarak).

Bir komut yürütürken, komutun ardından hem hem de Close ReleaseCommand öğesini çağırmalısınız.

Aynı komutu tekrar tekrar yürütmek istediğinizde, çağırmadan Executeönce çağırarak Close her sonuç kümesi erişimcisini serbest bırakmalısınız. Serinin sonunda, çağırarak ReleaseCommandparametre erişimcisini serbest bırakmanız gerekir. Bir diğer yaygın senaryo da çıkış parametrelerine sahip saklı yordamı çağırmaktır. Birçok sağlayıcıda (SQL Server için OLE DB sağlayıcısı gibi) sonuç kümesi erişimcisini kapatana kadar çıkış parametresi değerlerine erişilemez. Döndürülen satır kümesini ve sonuç kümesi erişimcisini kapatmak için çağırın Close , ancak parametre erişimcisini kapatmayın, bu nedenle çıkış parametresi değerlerini almanıza olanak sağlar.

Örnek

Aşağıdaki örnek, aynı komutu tekrar tekrar yürütürken nasıl çağrı Close ReleaseCommand yapabileceğinizi gösterir.

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

Varsa sonraki sonuç kümesini getirir.

Sözdizimi

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

Parametreler

pulRowsAffected
[in/out] Bir komuttan etkilenen satır sayısının döndürüldüğü belleğe işaretçi.

bBind
[in] Komutun yürütüldükten sonra otomatik olarak bağlanıp bağlanmayacağını belirtir. varsayılan değeridir ve truekomutun otomatik olarak bağlanmasına neden olur. bBind false ayarı komutun otomatik bağlamasını engeller, böylece el ile bağlanabilirsiniz. (El ile bağlama, OLAP kullanıcılarını özellikle ilgi çekici hale getirir.)

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

Daha önce bir sonuç kümesi getirilmişse, bu işlev önceki sonuç kümesini serbest bırakır ve sütunların bağlamasını bırakır. bBind isetrue, yeni sütunları bağlar.

Bu işlevi yalnızca TMultipleCMultipleResults= şablon parametresini ayarlayarak CCommand birden çok sonuç belirttiyseniz çağırmalısınız.

CCommand::Open

komutunu yürütür ve isteğe bağlı olarak bağlar.

Sözdizimi

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();

Parametreler

oturum
[in] Komutun yürütüldiği oturum.

wszCommand
[in] Yürütülecek komut, Unicode dizesi olarak geçirildi. kullanırken CAccessorNULL olabilir, bu durumda komut DEFINE_COMMAND makroya geçirilen değerden alınır. Ayrıntılar için OLE DB Programcı Başvurusu'nda ICommand::Execute bölümüne bakın.

szCommand
[in] Bu parametrenin bir ANSI komut dizesi alması dışında wszCommand ile aynıdır. Bu yöntemin dördüncü biçimi NULL değer alabilir. Ayrıntılar için bu konunun devamında yer alan "Açıklamalar" bölümüne bakın.

pPropSet
[in] Ayarlanacak özellikleri ve değerleri içeren DBPROPSET yapıları dizisinin işaretçisi. Bkz. Windows SDK'sında OLE DB Programcı Başvurusu'ndaki Özellik Kümeleri ve Özellik Grupları.

pRowsAffected
[in/out] Bir komuttan etkilenen satır sayısının döndürüldüğü belleğe işaretçi. *pRowsAffected null ise, satır sayısı döndürülür. Aksi takdirde* Open pRowsAffected değerini aşağıdaki koşullara göre ayarlar:

If Ardından
cParamSets öğesi pParams 1'den büyük *pRowsAffected , yürütmede belirtilen tüm parametre kümelerinden etkilenen toplam satır sayısını temsil eder.
Etkilenen satır sayısı kullanılamıyor *pRowsAffected ayarı -1 olarak ayarlanmıştır.
Komut satır güncelleştirmez, silmez veya eklemez *pRowsAffected tanımlanmamış.

guidCommand
[in] Sağlayıcının komut metnini ayrıştırırken kullanması için söz dizimini ve genel kuralları belirten GUID. Ayrıntılar için OLE DB Programcı Başvurusu'nda ICommandText::GetCommandText ve ICommandText::SetCommandText bölümüne bakın.

bBind
[in] Komutun yürütüldükten sonra otomatik olarak bağlanıp bağlanmayacağını belirtir. varsayılan değeridir ve truekomutun otomatik olarak bağlanmasına neden olur. bBind false ayarı komutun otomatik bağlamasını engeller, böylece el ile bağlanabilirsiniz. (El ile bağlama, OLAP kullanıcılarını özellikle ilgi çekici hale getirir.)

ulPropSets
[in] pPropSet bağımsız değişkeninde geçirilen DBPROPSET yapılarının sayısı.

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

Oturum açmanın Open ilk üç biçimi, bir komut oluşturun ve komutu yürüterek gerekli parametreleri bağlayın.

İlk biçimi Open bir Unicode komut dizesi alır ve varsayılan değeri yoktur.

İkinci biçimi Open bir ANSI komut dizesi alır ve varsayılan değer almaz (mevcut ANSI uygulamalarıyla geriye dönük uyumluluk için sağlanır).

üçüncü biçimi Open , varsayılan değeri NULL olan tür int nedeniyle komut dizesinin NULL olmasına izin verir. Çağırmak Open(session, NULL); için veya Open(session); NULL türünde intolduğundan sağlanır. Bu sürüm, parametresinin int NULL olmasını gerektirir ve onaylar.

Zaten bir komut oluşturduğunuzda ve tek bir Hazırlama ve birden çok yürütme gerçekleştirmek istediğinizde dördüncü biçimini Open kullanın.

Not

Open çağrılarını çağırır Executeve bu da öğesini çağırır GetNextResult.

CCommand::Create

Belirtilen oturum için bir komut oluşturmak üzere CCommand::CreateCommand'ı çağırır, ardından komut metnini belirtmek için ICommandText::SetCommandText'i çağırır.

Sözdizimi

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 ();

Parametreler

oturum
[in] Komutun oluşturulacağı oturum.

wszCommand
[in] Komut dizesinin Unicode metninin işaretçisi.

szCommand
[in] Komut dizesinin ANSI metnine yönelik bir işaretçi.

guidCommand
[in] Sağlayıcının komut metnini ayrıştırırken kullanması için söz dizimini ve genel kuralları belirten GUID. Diyalektlerin açıklaması için OLE DB Programcı Başvurusu'ndaki ICommandText::GetCommandText bölümüne bakın.

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

İlk biçimi Create bir Unicode komut dizesi alır. İkinci biçimi Create bir ANSI komut dizesi alır (mevcut ANSI uygulamalarıyla geriye dönük uyumluluk için sağlanır).

CCommand::CreateCommand

Yeni bir komut oluşturur.

Sözdizimi

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

Parametreler

oturum
[in] CSession Yeni komutla ilişkilendirilecek nesne.

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

Bu yöntem, belirtilen oturum nesnesini kullanarak bir komut oluşturur.

CCommand::GetParameterInfo

Komutun parametrelerinin, adlarının ve türlerinin listesini alır.

Sözdizimi

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

Parametreler

OLE DB Programcı Başvurusu'nda ICommandWithParameters::GetParameterInfo bölümüne bakın.

Dönüş Değeri

Standart bir HRESULT.

CCommand::Prepare

Geçerli komutu doğrular ve iyileştirir.

Sözdizimi

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

Parametreler

cExpectedRuns
[in] Komutunu yürütmeyi beklediğiniz sayıdır.

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

Bu yöntem, ICommandPrepare::P repare OLE DB yöntemini sarmalar.

CCommand::ReleaseCommand

Parametre erişimcisini serbest bırakır, ardından komutun kendisini serbest bırakır.

Sözdizimi

void CCommandBase::ReleaseCommand() throw();

Açıklamalar

ReleaseCommand ile Closebirlikte kullanılır. Kullanım ayrıntıları için bkz . Kapat .

CCommand::SetParameterInfo

Her komut parametresinin yerel türünü belirtir.

Sözdizimi

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

Parametreler

OLE DB Programcı Başvurusu'nda ICommandWithParameters::SetParameterInfo bölümüne bakın.

Dönüş Değeri

Standart bir HRESULT.

CCommand::Unprepare

Geçerli komut yürütme planını atar.

Sözdizimi

HRESULT CCommandBase::Unprepare() throw();

Dönüş Değeri

Standart bir HRESULT.

Açıklamalar

Bu yöntem, ICommandPrepare::Unprepare OLE DB yöntemini sarmalar.

Ayrıca bkz.

OLE DB Tüketici Şablonları
OLE DB Tüketici Şablonları Başvurusu