ADO中OpenSchema的用法,各位高手帮帮忙啊!!

happy_luo 2004-09-23 04:20:03
代码如下:
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,下面的语句也不能运行了,我找了半天原因也没找到,求求各位高手帮帮忙,看看问题出在哪里,我先谢谢了!!
...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2004-09-24
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthopenschemaxvc.asp

遍历得到
happy_luo 2004-09-24
  • 打赏
  • 举报
回复
如果number为-1,证明记录集里没有任何数据,在往下运行pRstSchema->MoveFirst();肯定会出错,我就是不知道记录集里的数据为什么会为空,也就是OpenSchema(adSchemaPrimaryKeys,&Array);的参数是不是用错了
内存泄漏 2004-09-23
  • 打赏
  • 举报
回复
pRstSchema->MoveFirst();
把这条语句写在int number=pRstSchema->GetRecordCount();前面试试看。。

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧