1.在用VC自动生成的数据库程序(ODBC)中,会在Document类中有一个CRecordset 类对象: public: CDbSet m_dbSet; 在什么时候(执行到哪一步)才会自动生成一个Database对象,m_dbSet又是哪 才得到它的指针? 2.一个CRecordset类是对应一个表,还是对应一个查询结果记录集(要查询的两表 的迪卡尔积)呢? 比方说:我想做(Select * from students,class),我有一个CRecordeset类, 是应该对应这两个表呢,还是对应一个表,再另外用一个类对应另一个表. 3.在VC自动生成的一个数据库程序中,这有一个缺省的CRecordset类,而且若 view中加个编辑框连接变量后就可以看到数据库中的信息,我想问的是:程序 是不是在哪已经自己执行了 rs.open (CRecordset::dynaset, _T( "Select * from Customer" )). 另外,rs.open的作用是不是就是对rs所对应的表(或表的迪卡尔积)进行选择 映射,然后把结果记集返回到rs中?

解决方案 »

  1.   

    1:什么时候也不会自动生成,m_dbSet又是哪 才得到它的指针?????2:随便,个人爱好3:是直行rs.open 另外,也是
      

  2.   

    建议不要用vc向导生成的数据库程序
    直接用CDatabase 与CRecordset
    1)声明一CDatabase base类型的变量再调用open相应的数据库
    2)声明CRecordset 变量set,与CDatabase变量关联
    3)写标准sql语句
    4) set.open(); set.getfieldvalue()查询
    5) base.executesql(sql) 其它操作。这样很简单用起来也灵活,
    只要熟悉SQL就行了。
      

  3.   

    关注此贴!a_stupid_boy() 兄提出的方法非常好。但讲的不够细。我也试用了这个方法,但在CRecordset.Open()这里会出问题,提示“在调用SQLFetchScroll/SQLExtendedFetch之前列没有绑定数据列”。这里若将Open()函数的第一个参数改为CRecordset::forwardOnly则也不会有问题,但这样,数据集就只能向前滚动了,也不太好。这里请a_stupid_boy() 兄或是其他那位高手能否详细讲解一下如何绑定数据列?
      

  4.   

    a_stupid_boy()   hfeiyang(飞熊)a_stupid_boy()   的方法是不可新的
    要实现动态,需要重载CRecordset
    http://expert.csdn.net/Expert/topic/1773/1773846.xml?temp=.3069574
      

  5.   

    其实用VC做数据库,不要用它的CRecordView类,而直接用CRecordSet类就可以了。