Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 CEnumeratorAccessor
gibiCDynamicParameterAccessor
CDynamicStringAccessor
). 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. |
Aç | 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 ReleaseCommand
parametre 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 true
komutun 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 CAccessor
NULL 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 true
komutun 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 int
olduğ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 Execute
ve 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 Close
birlikte 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