求怎样取得表的属性个数和名称 ,最好是关于Recordset方面的解决方法~

解决方案 »

  1.   

    什么数据库啊?如果是 SQL SERVER ,这些都会放在系统表中,你看看书就知道了。比如:sysobjects      syscolumns
      

  2.   

    是想通过编程的方法得到,不能是手动查.最好是用SQL语句,或这ADO方式得到!
      

  3.   

    谢谢zaodt,关于SQL SERVER你说的是对的.谢谢你提供思路!还请问oracle怎么得到呢?
      

  4.   

    你好!Oracle 我没用过,不过我想可能也差不多一样。另外,SQL SERVER 的做法好像也是跟 Sybase SQL SERVER 数据库学的。
      

  5.   

    呵呵..我昨天刚好写了这个函数CString CEncapsulateADO::GetTableName(CString &UserName, _ConnectionPtr &m_pConnection)
    {
    try
    {
    /*//获取该用户下的所有表名
    ADOX::_CatalogPtr m_pCatalog=NULL;  //定义目录智能指针
    ADOX::_TablePtr   m_pTable=NULL;    //定义表格智能指针 m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
    m_pTable.CreateInstance(__uuidof(ADOX::Table));*/ //获取该用户下的所有表名
    UserName.MakeUpper();
    //如何在SQL语句中加入单引号***********************
    CString Str="select * from user_tables where user ='" + UserName+"'";
    //给_variant_t vNULL赋空值
    _variant_t vNULL;
    vNULL.vt=VT_ERROR;
    vNULL.scode=DISP_E_PARAMNOTFOUND;
    //执行对应SQL语句
    p_Rst=GLobalVariable.m_pConnection->Execute((_bstr_t)Str,&vNULL,adCmdText);
    //获取用户DEVICE下的表名
    FieldPtr Field=p_Rst->GetFields()->GetItem("TABLE_NAME");
    CString TableName=(char*)(_bstr_t)Field->Value; return TableName;

    }
    catch (_com_error e)
    {
    AfxMessageBox(e.ErrorMessage());


    }
      

  6.   

    如果是oracle,也有专门存放表字段的地方……
    取得指定tablename的所有字段名和类型
    用recordset执行如下sql取得结果~
    SELECT table_name,column_name,data_type FROM user_tab_columns WHERE table_name=upper('tablename')
      

  7.   

    要先确保你的登录账号有select那个user_tab_columns 表的权限