ADO中OpenSchema的用法,各位高手帮帮忙啊!!
代码如下:
CString strUserID="sa";
CString strPassword="";
CString strConn="Provider=OraOLEDB.Oracle;Persist Security Info=False;Data
Source=insces";
try
{
pConnection.CreateInstance(__uuidof(Connection));
pConnection->Open(_bstr_t(strConn), _bstr_t(trUserID),
_bstr_t (strPassword),adConnectUnspecified);
catch (_com_error e)
{
AfxMessageBox("数据库连接有错误");
return FALSE;
}
//得到表的主键相关信息
SAFEARRAY FAR* psa = NULL;
SAFEARRAYBOUND rgsabound;
_variant_t var;
_variant_t Array;
rgsabound.lLbound = 0;
rgsabound.cElements = 3;
psa = SafeArrayCreate(VT_VARIANT, 1, &rgsabound);
long ix;
//PK_TABLE_CATALOG
ix = 0;
var.vt = VT_EMPTY;
SafeArrayPutElement(psa, &ix, &var);
//PK_TABLE_SCHEMA
ix=1;
var.vt = VT_EMPTY;
SafeArrayPutElement(psa, &ix, &var);
//PK_TABLE_NAME
CString m_strTableName="blockstatename";
ix=2;
var.vt=VT_BSTR;
var.bstrVal=_bstr_t(m_strTableName);//表名
SafeArrayPutElement(psa, &ix, &var);
Array.vt = VT_ARRAY|VT_VARIANT;
Array.parray = psa;
try
{
pRstSchema = pConnection->OpenSchema(adSchemaPrimaryKeys,&Array);
}
catch (_com_error e)
{
AfxMessageBox("记录集打开有错误");
return FALSE;
}
int number=pRstSchema->GetRecordCount();
pRstSchema->MoveFirst();
while(!(pRstSchema->EndOfFile))
{
_bstr_t column_name=pRstSchema->GetFields()->GetItem("COLUMN_NAME")->Value;
_bstr_t primarykey_name=pRstSchema->GetFields()->GetItem("PK_NAME")->Value;
}
以上是我写的程序,数据库连接是正确的,blockstatename这张表有两个主键,但是调试到
int number=pRstSchema->GetRecordCount();这句时
number为-1,下面的语句也不能运行了,我找了半天原因也没找到,求求各位高手帮帮忙,看看问题出在哪里,我先谢谢了!!