⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_42906.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:42906 发表者:草叶 发表日期:2003-06-06 18:20:16
<br>主题:怎样传递定义好的数据源对象给记录集?
<br>内容:我在myapp中定义了一个数据源对象,用别的记录集打开。我试了试,在初始化记录集的文件中加上一句extern CMyApp theApp;然后用CmyaaSet myaaSet(&amp;theApp.m_db);初始化成功,可是,我初始化后打开了记录集,并没有关闭,当在别的函数中(仍是这个类)使用时,编译通不过,非得再进行判断<BR>if (!myaaSet.IsOpen())<BR>&nbsp;&nbsp; myaaSet.Open();<BR>才行,并且又让输入密码(数据库有密码)。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-06-06 18:39:12
<br>内容:1)你应该在CMyApp theAPP并列地位处,比如它前面定义全局数据库指针<BR>CDatabase *pDb=new CDatabase();<BR>ASSERT(pDb!=NULL);//确保内存分配成功<BR><BR>CMyApp theAPP;<BR>.......<BR>2)在整个程序退出前销毁数据库对象<BR>if(pDb-&gt;IsOpen()) pDb-&gt;Clsoe();<BR>delete pDb;<BR>pDb=NULL;<BR>//不这样做,对于new分配的对象,会导致内存泄漏。<BR><BR>3)在使用pDb对象的类的CPP文件前部(定义的那个类除外),引入全局变量<BR>extern CDatabase *pDb;<BR><BR>4)使用时打开数据库<BR>&nbsp;&nbsp;if(!pDb-&gt;IsOpen())<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDb-&gt;OpenEx(_T("DSN=")+strDataSourceName+_T(";UID=")+strDbLogName+_T(";PWD=")+strDbPwd,CDatabase::noOdbcDialog);<BR>&nbsp;&nbsp;if(!pDb-&gt;IsOpen())<BR>{<BR>&nbsp;&nbsp; ....//确定记录集的打开情况<BR>}<BR>5)记录集的派生类生成:通过类向导派生一个新的记录集C**set,记录选择MFC 的CRecordset,确定后悔自动弹出对话框让你选择你建立好的数据源,然后选择标,最好选择全字段动态方式。<BR><BR>6)在使用记录集的类中包含记录集的支持文件<BR><BR>7)构造记录集并传入数据库对象指针<BR>&nbsp;&nbsp; C**set *pRs=new C**set(pDb);<BR>&nbsp;&nbsp; ASSERT(pRs!=NULL);<BR>&nbsp;&nbsp; //构造过滤条件<BR>&nbsp;&nbsp; pRs-&gt;m_strFilter=_T("".......);<BR>&nbsp;&nbsp; pRs-&gt;Open(CRecordset::dynaset,NULL,CRecorset::readOnly);<BR>&nbsp;&nbsp; if(!pRs-&gt;IsOpen())<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;....//缺省记录集的打开情况<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; .......//进行记录集的其它操作<BR>8)记录集使用完毕同样要释放<BR>&nbsp;&nbsp;if(pRs-&gt;IsOpen()) pRs-&gt;Clsoe();<BR>&nbsp;&nbsp;delete pRs;<BR>&nbsp;&nbsp;pRs=NULL;<BR><BR>我在给你写教科书了。<BR>2003-6-6 18:41:58

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -