ODBC数据库的问题,高手来。。

来源:百度知道 编辑:UC知道 时间:2024/07/07 23:46:56
1、我需要操作大量的表,这些表都在同一个ODBC数据源中,为了性能,是否可以只创建一个CDatabase,然后所有的CRecordset都绑定它?

2、在CRecordset的构造函数中,有一个参数是CDatabase * ,如果我为它传递一个CDatabase 对象的指针作为参数,是不是我就不需要重载GetDefaultConnect函数了???

3、如果在CRecordset的构造函数中传递了CDatabase *,那么在CRecordset类中的Open函数该怎么调用??

4、加入我在构造函数中使用了CDatabase *,而且又重载了GetDefaultConnect函数,但是他们不指向同一个数据源,会发生什么情况???
-------------------
楼下的回答,好像没有明白我问的关键啊。

不知道你有没有用过CRecordset??
它构造函数的说明是:
CRecordset::CRecordset( CDatabase * pDatabase = NULL );

也就是说,构造一个CRecordset类的对象,可以为它传递一个CDatabase,也可以不传递。

如果不传递,CRecordset就会自动在内部创建一个临时的CDatabase对象。而且会使用GetDefaultConnect来获得ODBC数据源。

明白了这点,你再看看我的问题吧。。

1.可以,用不同的sql语句进行操作就是了,其实,本来就是这样玩的,你又不是多个线程并发,你只要打开一个CDatabase,,然后在不同的CRecordset用OPEN方法开不同的表,这是用sql语句来控制的

2.不知道具体说的是哪个,不过CRecordset只需要一个指明的CDatabase,你定义过了,其他就不用太关心了,当然首先你的CDatabase必须是正常链接打开的

3.你直接用sql语句open就是了,他有成员变量CDatabase ,这个他自己会调整的,

4.CDatabase 成员变量只有一个地址,,他指向谁就是谁,,你看他最终指向的是谁呗,,

总而言之,,CRecordset需要一个正常链接的数据源CDatabase ,不管你通过什么办法,,给他一个就是了,后面的操作你只要按既定规则操作就是了,没问题滴